自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 343. 整数拆分 剑指 Offer 14- I. 剪绳子

343. 整数拆分给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。剑指 Offer 14- I. 剪绳子给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],

2021-02-26 11:31:09 178

原创 常见限流算法和go语言time/rate go.uber.org/ratelimit讲解

目录1 背景2 主流限流算法2.1 固定/滑动窗口限流算法2.1.1 固定窗口限流2.1.2 滑动窗口限流2.2 漏桶算法2.3 令牌桶3 golang标准库库实现限流算法3.1 构造一个限流器3.2 Wait/WaitN3.3 Allow/AllowN3.4 Reserve/ReserveN3.5 动态调整速率3.6 Token 的生成和消费3.7 float 精度问题3.8 数值溢出问题3.9 token的归还4 uber-go官方库限流4.1 ratelimit 的使用4.2 基本实现4.3 最大松弛

2020-05-15 14:45:22 3211 2

原创 golang 文件读写汇总

文件打开os.Open() 返回只读模式的文件描述符os.OpenFile(filename, os.O_RDWR|os.O_APPEND|os.O_CREATE, 0666) O_RDONLY:只读模式(read-only) O_WRONLY:只写模式(write-only) O_RDWR:读写模式(read-write) O_APPEND:追加模式(append) O_CRE...

2020-04-30 18:52:09 911

原创 剑指offer 59 - II. 队列的最大值

描述请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入: ["MaxQueue","push_back","push_back","max_value","pop_front","max...

2020-02-29 03:43:11 428

原创 剑指offer 36. 二叉搜索树与双向链表/leetcode 426. 将二叉搜索树转化为排序的双向链表 python实现

描述将一个二叉搜索树就地转化为一个已排序的双向循环链表。可以将左右孩子指针作为双向循环链表的前驱和后继指针。我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。对于双向循环链表,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点。下图展示了上面的二叉搜索树转化成的链表。“head” 表示指向链表中有最小元素的节点。思路利用中序遍历 非递归...

2020-02-29 02:14:47 240

原创 剑指offer 31. 栈的压入、弹出序列/leetcode 946. 验证栈序列 golang实现

描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,...

2020-02-28 23:57:58 275

原创 leetcode 560. 和为K的子数组 golang实现

描述给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数k的范围是[-1e7, 1e7]。思路我们记录每个索引对应的sum i...

2020-01-19 07:36:00 208

原创 leetcode 240. 搜索二维矩阵 II golang实现

描述编写一个高效的算法来搜索mxn矩阵 matrix 中的一个目标值 target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, ...

2020-01-19 05:58:45 179

原创 leetcode 85. 最大矩形 golang实现

描述给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[ ["1","0","1","0","0"], ["1","0","1","1","1"], ["1","1","1","1","1"], ["1","0","0","1","0"]]输出: 6思路利用84题 求最大矩形的思想 对每一行求出柱形图的高度...

2020-01-18 19:25:10 236

原创 leetcode 84. 柱状图中最大的矩形 golang实现

描述给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例:输入: [2,1,5,6,2,3]输出: 10思路实现func largestRectangleArea(heights []int) int { var max int var stack = make([]int, 0...

2020-01-18 19:22:15 249

原创 leetcode 33. 搜索旋转排序数组 golang实现

描述假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1...

2020-01-16 00:44:32 348

原创 leetcode 215. 数组中的第K个最大元素 golang实现

描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。思路维护一个最小堆即可 ...

2020-01-15 20:34:29 511

原创 leetcode 200. 岛屿数量 golang实现

描述给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出: 1示例 2:输入:11000110000010000011输出: 3思路深度优先遍历每次遇到=1的地方 ...

2020-01-14 16:03:27 312

原创 leetcode 406. 根据升高重建队列 golang实现

描述假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [...

2020-01-14 16:02:48 156

原创 leetcode 56. 合并区间 golang实现

描述给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。...

2020-01-10 15:24:15 497

原创 leetcode 394. 字符串解码 golang实现

描述给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像3a或2[4...

2020-01-09 19:50:58 251 1

原创 leetcode 146. LRU缓存机制 golang实现

描述运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最近最少使...

2020-01-03 18:18:20 475

原创 leetcode 253. 会议室 II golang实现

描述给定一个会议时间安排的数组,每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],...] (si < ei),为避免会议冲突,同时要考虑充分利用会议室资源,请你计算至少需要多少间会议室,才能满足这些会议安排。示例 1:输入: [[0, 30],[5, 10],[15, 20]]输出: 2示例 2:输入: [[7,10],[2,4]]输出: 1思...

2020-01-03 15:36:47 737

原创 leetcode 148. 排序链表 golang实现

描述在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路分治思想1. 将链表切成两份 一直切到无法再切2. 将切...

2020-01-03 11:35:49 866

原创 leetcode 23. 合并K个排序链表 golang实现

描述合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6思路方法1: 两两合并方法2: 分治合并实现// 分治合并func mergeKLists(l...

2020-01-03 10:43:50 276

原创 leetcode 347. 前 K 个高频元素 golang实现

描述给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]说明:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) ,n是数组的大小。思...

2020-01-02 15:15:47 383

原创 leetcode 206. 反转链表 golang实现

描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL思路利用pre、cur、next保存前一个、当前、下一个节点, 判断好临界值即可实现func reverseList(head *ListNode) *ListNode { // 如果空链表...

2020-01-02 15:15:09 224

原创 leetcode 55. 跳跃游戏 golang实现

描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论...

2019-12-17 17:51:36 116

原创 leetcode 448. 找到所有数组中消失的数字 golang实现

描述给定一个范围在 1 ≤ a[i] ≤ n (n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入:[4,3,2,7,8,2,3,1]输出:[5,6]思路交换原理...

2019-12-17 17:17:30 186

原创 leetcode 437. 路径总和 III golang实现

描述给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = ...

2019-12-17 16:26:16 149

原创 leetcode 79. 单词搜索 golang实现

描述给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['A','D','E','E']]给定 word = "ABC...

2019-12-17 15:42:59 304

原创 leetcode 78. 子集 golang实现

描述给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]思路回溯要注意排序的问题 不然会有重复子集 如:[2,3] [3,2]pre 为 路径中上一个边 ...

2019-12-17 04:55:36 566

原创 leetcode 46. 全排列 golang实现

描述给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]思路回溯法实现func permute(nums []int) [][]int { ret := make([][]int, 0) if len...

2019-12-17 04:34:00 404

原创 leetcode 39. 组合总和 golang实现

描述给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。解集不能包含重复的组合。示例1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[ [7],...

2019-12-17 03:58:53 337

原创 leetcode 22. 括号生成 golang实现

描述给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路1. 回溯算法剪枝条件1) left > 0 时 可以加 "("2) right > 0 &&amp...

2019-12-16 18:38:28 364

原创 leetcode 20. 有效的括号 golang实现

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

2019-12-16 03:19:49 149

原创 leetcode 17. 电话号码的字母组合 golang实现

描述给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]思路切片ret 每次保存的都是遍历完一个数字后的字符串组合以 "23为例"ret内的值为循环之前: [""...

2019-12-16 02:08:03 179

原创 leetcode 21. 合并两个有序链表 golang实现

描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4思路实现func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { var head ...

2019-12-13 11:05:17 256 2

原创 leetcode 136. 只出现一次的数字 golang实现

描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例2:输入: [4,1,2,1,2]输出: 4思路1. 如果我们对 0 和二进制位做 XOR 运算,得到的仍然是这个二进制位a ^ 0 = a...

2019-12-13 00:54:24 98

原创 leetcode 287. 寻找重复数 golang实现

描述给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2)...

2019-12-12 20:10:27 142

原创 leetcode 283. 移动零 golang实现

描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路将非0移到前面 在将后面的位置设为0利用快慢指针 slow 表示非0的右边界 fast表示当前遍历的位置实现func moveZe...

2019-12-12 18:30:22 147

原创 leetcode 234. 回文链表 golang实现

描述请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路1. 利用快慢指针 找到链表的中间节点2. 满指针在遍历的时候将前半部分的链表反转3. p1 p2 分别指向中间节点开始遍历判断是否相等...

2019-12-12 17:52:42 223

原创 leetcode 142. 环形链表 II golang实现

描述给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。思路原作者地址当fast == slow时, 两指针在环中 第一次相遇 。下面分析此时fast 与 slow走过的 步数关系 :设链表共有 a+ba+b 个节点,其中 链表头部到链表入口 有 aa 个节点(不计链表入口节点), 链表环 有 bb 个节点(这里需要注意,aa 和 bb 是未知数,例如图解上...

2019-12-12 16:50:36 239

原创 leetcode 141. 环形链表 golang实现

描述给定一个链表,判断链表中是否有环。思路一快一慢的双指针, 如果快的能追上满的 说明时环形链表实现func hasCycle(head *ListNode) bool { if head == nil || head.Next == nil{ return false } var fast = head.Next var slow = head for slow...

2019-12-12 12:10:41 143

原创 leetcode 75. 颜色分类 golang实现

描述给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。...

2019-12-12 11:45:49 111

空空如也

空空如也

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

TA关注的人

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