
LeetCode
2020_05:当我准备和面试官讲项目和底层原理时,他用了两个算法题送走了我
--每日一题!或者两三天一题!哈哈哈
hodgeKou
这个作者很懒,什么都没留下…
展开
-
一步获取LeetCode的cookies
leetcode pluginplugin 下载https://github.com/shuzijun/leetcode-editor/blob/master/README_ZH.md获取登陆的cookies浏览器F12。console输入javascript:document.cookie 打完收工原创 2022-04-21 09:24:42 · 5241 阅读 · 3 评论 -
25. K 个一组翻转链表
25. K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[2,1,4,3,5]code/** * Definition for singly-l原创 2022-02-21 23:29:42 · 270 阅读 · 0 评论 -
23. 合并K个升序链表
23. 合并K个升序链表给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists =原创 2022-02-21 11:47:06 · 290 阅读 · 0 评论 -
148. 排序链表
148. 排序链表给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]提示:链表中节点的数目在范围 [0, 5 * 104] 内-105 <= Node.val <= 105进阶:你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链原创 2022-02-21 11:46:02 · 520 阅读 · 0 评论 -
为什么LeetCode过一段时间又不会了
为什么上个月刚做过的LeetCode今天做又不会了怎么从这个迷宫的左上角走到右下角?看起来好像很给力,但是花时间还是可以找得到答案。看了答案之后可以很清楚,这是正解。只有一个问题:我怎么就没立刻想到? 当在看题解或者听别人讲授思路的时候,你就是按照正确的路线在走迷宫。而过了一个月,你重新再做一次的时候就又会把所有可能遍历一次。答案在展现给人的时候,我们都会觉得它显而易见。因为难点不在于答案本身,而在于方向。如何找到这个方向呢?在于搜索能力,以及经验与练习。DFS或者BFS把所有的可原创 2022-02-01 11:16:32 · 507 阅读 · 0 评论 -
303. 区域和检索 - 数组不可变
303. 区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3说明:你可以假设数组不可变。会多次调用 sumRange 方法。https://leetcode-c原创 2020-09-25 21:15:27 · 268 阅读 · 0 评论 -
链表相加 2. 两数相加
2. 两数相加给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807https://leetcode-cn.com/pro原创 2020-09-25 11:59:06 · 339 阅读 · 0 评论 -
DFS
1254. 统计封闭岛屿的数目func closedIsland(grid [][]int) int { var num int for i:=0; i<len(grid); i++ { for j:=0; j<len(grid[0]); j++ { if grid[i][j] == 0 && dfs(grid, i, j) { num += 1 } } } return num}func dfs(grid [][]int, i, j原创 2020-06-14 11:09:59 · 262 阅读 · 0 评论 -
循环链表的反转
206. 反转链表func reverseList(head *ListNode) *ListNode { if head == nil || head.Next == nil { return head } p := reverseList(head.Next) head.Next.Next = head head.Next = nil return p}循环链表的反转func reverse(head, key *ListN原创 2020-06-09 15:38:09 · 1668 阅读 · 0 评论 -
LeetCode (合集)合并链表和数组
LeetCode 88. 合并两个有序数组 golangLeetCode 21. 合并两个有序链表 golang原创 2020-05-12 17:22:45 · 289 阅读 · 0 评论 -
LeetCode 88. 合并两个有序数组 golang
88. 合并两个有序数组给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]...原创 2020-05-12 17:20:03 · 281 阅读 · 0 评论 -
LeetCode 128. 最长连续序列 golang
128. 最长连续序列【困难】给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。Code// 解题思路// 将所有nums中元素录入numMap// 对每个numMap中元素,检测是否是第一个起始元素,如果不是起始元素,skip;如果是,对该元素循环+1从numMap找到该元素对应的最长currentLength原创 2020-05-11 16:23:45 · 508 阅读 · 0 评论 -
LeetCode(合集)括号 golang
LeetCode(合集)括号20. 有效的括号 golang(三)22. 括号生成 golang 图解原创 2020-05-11 15:24:22 · 236 阅读 · 0 评论 -
LeetCode 20. 有效的括号 golang(三)
20. 有效的括号这个题做了三次,前两次的解法现在觉得是算不得正确的。看的多写得少做的多总结少给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: falseMefunc isValid(s原创 2020-05-11 15:22:19 · 268 阅读 · 0 评论 -
LeetCode(集合)队列和栈的相互实现 golang
手写!!!225. 用队列实现栈使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。你可以假设所有操原创 2020-05-10 15:45:39 · 282 阅读 · 0 评论 -
LeetCode(合集)删除数组中的元素(26,80,283)
26. 删除排序数组中的重复项80. 删除排序数组中的重复项 II golang283. 移动零 golang原创 2020-05-10 13:52:23 · 214 阅读 · 0 评论 -
283. 移动零 golang
283. 移动零给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。Codefunc moveZeroes3(nums []int) { j := 0 for i := 0; i < len(nums); i++ { if nums[i] == 0 { continue } nums[j]原创 2020-05-10 13:16:46 · 218 阅读 · 0 评论 -
80. 删除排序数组中的重复项 II golang
80. 删除排序数组中的重复项 II给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,1,2,3,3]原创 2020-05-10 13:16:05 · 226 阅读 · 0 评论 -
26. 删除排序数组中的重复项 golang
26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度原创 2020-05-10 13:15:18 · 215 阅读 · 0 评论 -
45. 跳跃游戏 II golang 动态规划
45. 跳跃游戏 II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。说明:假设你总是可以到达数组的最后一个位置。Codefunc jump(nums []int) int { length :=原创 2020-05-09 23:04:18 · 275 阅读 · 0 评论 -
1346. 检查整数及其两倍数是否存在 golang
1346. 检查整数及其两倍数是否存在1346. 检查整数及其两倍数是否存在给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。更正式地,检查是否存在两个下标 i 和 j 满足:i != j0 <= i, j < arr.lengtharr[i] == 2 * arr[j]示例 1:输入:arr = [10,2,5,3]输出:true解释:N = 10 是 M = 5 的两倍,即 10 = 2 * 5 。示例原创 2020-05-09 19:25:19 · 529 阅读 · 0 评论 -
LeetCode 33. 搜索旋转排序数组 golang
33. 搜索旋转排序数组三个测试用例, 这个题的难度是二分法的左侧条件很难写出来。4 5 6 0 1 2 31 2 3 4 5 6 05 1 2 3 4( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度...原创 2020-05-06 23:52:44 · 202 阅读 · 0 评论 -
LeetCode(合集)两数之和总结 (1,167,1346)
两数之和 1167. 两数之和 II - 输入有序数组 golang一个数组是否存在两个数是target的整数倍?如果有人知道这是LeetCode哪个题,给我说一下给每个数做整除,然后在遍历...原创 2020-04-29 21:26:56 · 184 阅读 · 0 评论 -
1190. 反转每对括号间的子串 golang反转字符串
1190. 反转每对括号间的子串557. 反转字符串中的单词 III 344. 反转字符串 golang 这个题比较新,但是面试竟然被问到了。10分钟之内没写出来给出一个字符串 s(仅含有小写英文字母和括号)。请你按照从括号内到外的顺序,逐层反转每对匹配括号中的字符串,并返回最终的结果。注意,您的结果中 不应 包含任何括号。示例 1:输入:s = “(abcd)”输出:“d...原创 2020-04-29 11:26:18 · 552 阅读 · 1 评论 -
LeetCode 303,560,1248 (前缀求和 )
303. 区域和检索 - 数组不可变给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。示例:给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> ...原创 2020-04-21 21:54:01 · 288 阅读 · 0 评论 -
120. 三角形最小路径和 golang
120. 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。Codefunc minimumTotal(triangle [][]int) int { if len(triangl...原创 2020-04-06 22:00:53 · 236 阅读 · 0 评论 -
349. 两个数组的交集 golang
349. 两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。Codefunc intersec...原创 2020-04-06 16:26:39 · 683 阅读 · 0 评论 -
257. 二叉树的所有路径 golang
257. 二叉树的所有路径给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3Codefunc binaryTreePaths(r...原创 2020-04-06 16:14:33 · 411 阅读 · 0 评论 -
42. 接雨水 golang
42. 接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6Codefunc trap...原创 2020-04-06 14:56:50 · 389 阅读 · 0 评论 -
15. 三数之和 golang
15. 三数之和给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]Codefun...原创 2020-04-06 12:42:02 · 503 阅读 · 0 评论 -
56. 合并区间 golang
56. 合并区间给出一个区间的集合,请合并所有重叠的区间。示例 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-04-06 12:40:51 · 673 阅读 · 0 评论 -
41. 缺失的第一个正数 golang
41. 缺失的第一个正数给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1Code双百解法!这个题据说今日头条出过,注意最优解是让切片自己成为hash。记住这种思想很重要func firstMissingPosit...原创 2020-04-05 22:08:41 · 337 阅读 · 0 评论 -
581. 最短无序连续子数组 golang
581. 最短无序连续子数组给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入的数组长度范围在 [1, ...原创 2020-04-05 14:12:55 · 199 阅读 · 0 评论 -
739. 每日温度 golang
739. 每日温度根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000...原创 2020-04-05 10:35:38 · 202 阅读 · 0 评论 -
739. 每日温度 golang (list实现)
739. 每日温度根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000...原创 2020-04-04 21:17:00 · 544 阅读 · 0 评论 -
golang中的栈(LeetCode刷题)
Invalid operation: i-ind (mismatched types int and interface{})golang没有设计stack类型吗?答案是有的!使用list(双链表)的部分操作就可以达到stack操作的目的。stack := list.New() //初始化栈ind := stack.Remove(stack.Front()).(int) //出栈stac...原创 2020-04-04 21:05:15 · 2445 阅读 · 0 评论 -
199. 二叉树的右视图
199. 二叉树的右视图给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---Code...原创 2020-04-03 22:45:55 · 167 阅读 · 0 评论 -
662. 二叉树最大宽度 golang
662. 二叉树最大宽度给定一个二叉树,编写一个函数来获取这个树的最大宽度。树的宽度是所有层中的最大宽度。这个二叉树与满二叉树(full binary tree)结构相同,但一些节点为空。每一层的宽度被定义为两个端点(该层最左和最右的非空节点,两端点间的null节点也计入长度)之间的长度。示例 1:输入: 1 / \ 3 2 / \ ...原创 2020-04-03 22:35:49 · 445 阅读 · 0 评论 -
958. 二叉树的完全性检验 golang
958. 二叉树的完全性检验给定一个二叉树,确定它是否是一个完全二叉树。百度百科中对完全二叉树的定义如下:若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~ 2h 个节点。)示例 1:输入:[1,2,3,4,5,6]输出:true解释:最后一层前的每一层都...原创 2020-04-03 20:59:48 · 294 阅读 · 0 评论 -
222. 完全二叉树的节点个数 golang
222. 完全二叉树的节点个数给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6Codef...原创 2020-04-03 20:57:39 · 232 阅读 · 1 评论