自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 有效的字母异位词 go语言

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的一个字母异位词。示例 1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false说明:你可以假设字符串只包含小写字母。func isAnagram(s string, t string) bool {...

2018-11-12 18:02:05 214

原创 字符串中的第一个唯一字符 go语言

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2. 注意事项:您可以假定该字符串只包含小写字母。//方法一func firstUniqChar(s string) int { bt:=[]byte(s) num := mak...

2018-11-12 16:48:36 1338

原创 岛屿的个数 go实现

给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3func numIslands(grid...

2018-12-13 21:02:09 565

原创 字符串的排列 go实现

给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的子串。示例1:输入: s1 = "ab" s2 = "eidbaooo"输出: True解释: s2 包含 s1 的排列之一 ("ba"). 示例2:输入: s1= "ab" s2 = "eidboaoo"输出: False 注意:...

2018-12-06 11:40:06 1378

原创 奇偶链表 go实现

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->...

2018-12-01 15:47:52 300

原创 两数相加 go实现

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -...

2018-12-01 14:56:54 252

原创 递增的三元子序列 go实现

给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:输入...

2018-11-30 20:42:00 302

原创 最长回文子串 go实现

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"func longestPalindrome(s string) string { n:=len(s) if s=="" {

2018-11-30 16:25:57 435

原创 无重复字符的最长子串 go实现

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 ".

2018-11-29 16:04:35 229

原创 字谜分组 go实现

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"],

2018-11-29 15:43:09 182

原创 矩阵置零 go实现

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0。请使用原地算法。示例 1:输入: [ [1,1,1], [1,0,1], [1,1,1]]输出: [ [1,0,1], [0,0,0], [1,0,1]]示例 2:输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5]]输出...

2018-11-28 16:22:29 255 1

原创 三数之和 go实现

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]func thre...

2018-11-28 15:15:38 487

原创 有效的括号 go实现

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:...

2018-11-24 09:56:21 610

原创 有效的括号 go实现

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:...

2018-11-24 09:47:20 389

原创 帕斯卡三角形 go实现

给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]func generate(numRows int) [][]int { var ret [][]...

2018-11-24 09:38:16 172

原创 汉明距离 go实现

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意:0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。func hammingD...

2018-11-23 21:11:01 298

原创 罗马数字转整数 go实现

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。...

2018-11-23 20:04:10 257

原创 3的幂 go实现

给定一个整数,写一个函数来判断它是否是 3 的幂次方。示例 1:输入: 27输出: true示例 2:输入: 0输出: false示例 3:输入: 9输出: true示例 4:输入: 45输出: false你能不使用循环或者递归来完成本题吗?func isPowerOfThree(n int) bool { base := 1 for b...

2018-11-23 17:48:06 355

原创 计数质数 go实现

统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。埃拉托斯特尼筛法筛选的主要方法1.划去2的倍数;2.划去3的倍数;3 划去5的倍数;(4的倍数同为2的倍数,已被划去)4.划去7的倍数;(6的倍数同为3的倍数,已被划去)5.划去11的倍数;(8和10的倍数同为2的倍数,而9的...

2018-11-23 16:51:45 300

原创 Fizz Buzz go实现

写一个程序,输出从 1 到 n 数字的字符串表示。1. 如果 n 是3的倍数,输出“Fizz”;2. 如果 n 是5的倍数,输出“Buzz”;3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。示例:n = 15,返回:[ "1", "2", "Fizz", "4", "Buzz", "Fizz",

2018-11-23 16:04:11 178

原创 最小栈 go实现

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0...

2018-11-22 21:24:50 467

原创 Shuffle an Array go实现

打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。solution.shuffle();// 重设数组到它的初始状态[1,2,3]。...

2018-11-22 17:44:59 514

原创 打家劫舍 go实现

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃...

2018-11-22 16:35:42 134

原创 最大子序和 go实现

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。func maxSubArray(nums []int) in...

2018-11-21 21:48:30 140

原创 买卖股票的最佳时机 go语言

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...

2018-11-20 17:04:10 592

原创 爬楼梯 go语言

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 ...

2018-11-20 16:33:07 426

原创 合并两个有序数组 go实现

给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 =...

2018-11-20 10:30:59 949 1

原创 Raft——分布式一致性算法 go简单实现

Raft 是什么⚫ Raft 提供了一种在计算系统集群中分布状态机的通用方法,确保集群中的每个节点 都同意一系列相同的状态转换⚫ 它有许多开源参考实现,具有 Go,C ++,Java 和 Scala 中的完整规范实现⚫ 一个 Raft 集群包含若干个服务器节点,通常是 5 个,这允许整个系统容忍 2 个节 点的失效,每个节点处于以下三种状态之一◼follower(跟随者) ...

2018-11-20 10:28:57 2402 3

原创 PBFT——拜占庭算法 go简单实现

BFT 是什么⚫ BFT( Byzantine Fault Tolerance)称为拜占庭容错⚫ 拜占庭容错技术是一类分布式计算领域的容错技术,用来解决拜占庭问题,拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络也有可能出现不可预料的行为⚫ 拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求拜占庭容错系统...

2018-11-20 10:22:09 5419 5

原创 DPoS——股份授权证明 go简单实现

⚫ DPoS 即 Delegated Proof of Stake 译为股份授权证明⚫ 最早于 2013 年由 Bitshares 提出,目的为解决 PoW 和 PoS 机制的不足⚫DPoS 机制的加密货币,每个节点都可以操作区块,并按照个人的持股比例获得“利 息”⚫DPoS 是由被社区选举的可信帐户(受托人,得票数排行前 101 位)来创建区块, 为了成为正式受托人,用户要去...

2018-11-20 10:09:38 576

原创 PoS——权益证明 go简单实现

⚫PoS(Proof of Stake)译为权益证明,是一种在公链中的共识算法,可作为 PoW 算 法的一种替换⚫基于权益证明的数字货币中,下一个区块的选择是根据不同节点的股份和时间进行 随机选择的⚫PoS 的设计理念,来自于对比特币危机的思考,比特币的区块产量每 4 年会减半, 在不久的未来,随着比特币区块包含的产量越来越低,大家挖矿的动力将会不断下 降,矿工人数越来越少,整个比...

2018-11-20 09:46:47 765

原创 PoW——工作量证明 go实现

Proof-of-Work 简称 PoW,即为工作量证明⚫通过计算一个数值,使得拼揍上交易数据后内容的值满足规定的上限,在节点成功 找到满足的 Hash 值之后,会马上对全网进行广播打包区块,网络的节点收到广播 打包区块,会立刻对其进行验证⚫网络中只有最快解密的区块,才会添加的账本中,其他的节点进行复制,这样就保 证了整个账本的唯一性⚫假如节点有任何的作弊行为,都会导致网络的节点验...

2018-11-20 09:30:49 342

原创 将有序数组转换为二叉搜索树 go实现

将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -1...

2018-11-19 20:09:14 453

原创 二叉树的层次遍历 go语言

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]var result [][]intfunc levelOrder1...

2018-11-19 19:54:12 2052

原创 go实现栈

栈概述栈是数据按照后进先出 LIFO(Last-In-First-Out) 原则组成的集合。添加和移除元素都是在栈顶进行,类比书堆,不能在栈底增删元素。栈的应用很广泛,比如网页跳转后一层层返回,ctrl+z 撤销操作等。使用 slice 动态类型来实现栈,栈元素的类型是使用 genny 创建的通用类型 ItemStack,实现以下常用操作:package stackimport...

2018-11-19 16:05:12 163

原创 go队列简单实现

队列概述队列是数据按照先进先出 FIFO(First-In-First-Out) 原则组成的集合,类比排队,在队列任一端添加元素,从对应的另一端删除元素。使用 slice 动态类型来实现队列,元素的类型为通用类型 ItemQueue ,实现以下常用操作:package queueimport ( "github.com/cheekybits/genny/generic" "s...

2018-11-19 16:01:47 527

原创 对称二叉树 go语言

给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3说明:如果你可以运用递归和迭代两种方法解决这个问...

2018-11-19 15:39:16 255

原创 验证二叉搜索树 go语言

给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3输出: true示例 2:输入: 5 / \ 1 4 / \ 3 6输...

2018-11-18 21:02:40 212

原创 二叉树的最大深度 go语言

给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。/** * Definition for a binary tree no...

2018-11-18 20:11:31 891

原创 回文链表 go语言

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?/** * Definition for singly-linked list. * type ListNode struct { * ...

2018-11-16 15:05:25 119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除