
LeetCode
大写的ZDQ
这个作者很懒,什么都没留下…
展开
-
Leetcode-845. 数组中的最长山脉(最详细解法)
845. 数组中的最长山脉我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”:B.length >= 3存在 0 < i < B.length - 1 使得 B[0] < B[1] < … B[i-1] < B[i] > B[i+1] > … > B[B.length - 1](注意:B 可以是 A 的任意子数组,包括整...原创 2020-04-02 15:34:45 · 2031 阅读 · 0 评论 -
Leetcode-80 删除排序数组中的重复项 II(最详细解答)
Leetcode-80 删除排序数组中的重复项 II给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, ...原创 2020-03-22 15:24:52 · 1524 阅读 · 0 评论 -
Leetcode-202 快乐数(最详细讲解)
Algorithmhttps://leetcode-cn.com/problems/happy-number/编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例:输入: 19输出: true解释:...原创 2020-03-10 22:56:44 · 3264 阅读 · 0 评论 -
leetcode-543 二叉树的直径
leetcode543 二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边...原创 2020-03-10 14:57:16 · 473 阅读 · 0 评论 -
leetcode148-排序链表(c++)
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。示例 1:输入: 4->2->1->3输出: 1->2->3->4示例 2:输入: -1->5->3->4->0输出: -1->0->3->4->5思路:归并排序(递归法)题目要求时间空间复杂度分别为O(nlogn)O(nl...原创 2019-10-22 21:47:24 · 917 阅读 · 0 评论 -
leetcode75-颜色分类(C++)
题目描述:给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。...原创 2019-10-22 20:24:07 · 378 阅读 · 0 评论 -
Leetcode6——Z字变换(C++)
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:st...原创 2019-10-19 10:05:13 · 460 阅读 · 0 评论 -
LeetCode3:无重复字符的最长子串(C++)
题目描述:给定一个字符串,找出不含有重复字符的 最长子串 的长度。示例:给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,“pwke” 是 子序列 而不是子串思路:这是一道可以跟Two Sum媲美的题。...原创 2019-10-18 22:23:45 · 288 阅读 · 0 评论 -
leetcode79.单词搜索(回溯dfs)、200.岛屿数量
79.单词搜索给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”,...原创 2019-08-25 10:48:06 · 272 阅读 · 0 评论 -
Leetcode回溯算法模板
回溯算法Leetcode汇总:78.子集class Solution: def subsets(self, nums): if not nums: return [] res = [] n = len(nums) def helper(idx, temp_list): res.append(temp_list) f...原创 2019-08-24 14:48:10 · 662 阅读 · 0 评论 -
Leetcode——46. 全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路:回溯方法,每次取一个prefix,剩下的继续做permutation,然后连接起来加入res中class Solution: def permute(self, nums: L...原创 2019-04-17 10:54:18 · 207 阅读 · 0 评论 -
Leetcode——437. 路径总和 III
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 ...原创 2019-03-20 10:12:10 · 155 阅读 · 0 评论 -
Leetcode——113. 路径总和 II
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:...原创 2019-03-19 10:32:20 · 211 阅读 · 0 评论 -
Leetcode——112. 路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 ...原创 2019-03-18 21:11:17 · 206 阅读 · 0 评论 -
二分搜索小结-x的平方根
二分查找法作为一种常见的查找方法,将原本是线性时间提升到了对数时间范围,大大缩短了搜索时间,具有很大的应用场景,而在LeetCode中,要运用二分搜索法来解的题目也有很多,但是实际上二分查找法的查找目标有很多种,而且在细节写法也有一些变化。第一类: 需查找和目标值完全相等的数这是最简单的一类,也是我们最开始学二分查找法需要解决的问题,比如我们有数组[2, 4, 5, 6, 9],target ...原创 2019-03-14 10:33:00 · 230 阅读 · 0 评论 -
Leetcode——347. 前K个高频元素
给定一个非空的整数数组,返回其中出现频率前 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 是数组的大小。思路:...原创 2019-03-08 10:05:54 · 293 阅读 · 0 评论 -
Leetcode——6. Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:st...原创 2019-03-02 15:54:11 · 216 阅读 · 0 评论 -
Leetcode——94.二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗?原创 2019-02-26 11:14:36 · 197 阅读 · 0 评论 -
Leetcode——144. 二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路:用栈(Stack)的思路来处理问题。前序遍历的顺序为根-左-右,具体算法为:把根节点push到栈中循环检测栈是否为空,若不空,则取出栈顶元素,保存其值看其右子节点是否存在,若存在则push到栈中看其左子节点...原创 2019-02-23 22:17:47 · 350 阅读 · 2 评论 -
Leetcode——20. 有效的括号
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入: “([)...原创 2019-02-23 10:11:11 · 182 阅读 · 0 评论 -
Leetcode——19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.思路:nodeList相关的,需要删除一个节点,就应该要找到前一个节点,但是头结点又没有前一个节点,又是dummyHead大法,只不过这里需要用到双指针。...原创 2019-02-22 10:18:06 · 364 阅读 · 0 评论 -
Leetcode——237. 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:...原创 2019-02-21 22:30:19 · 406 阅读 · 0 评论 -
Leetcode——24. 两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.思路:nodeList,交换链表这种题目可以用dummyHead大法,因为我们不知道head的前一个节点指向的是什么?1的前一个节点指向2,2指向1,1也要一个前...原创 2019-02-21 22:16:59 · 369 阅读 · 0 评论 -
Leetcode——203. 移除链表元素
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路1:这里的链表需要考虑多种情况,头结点不是空,并且一开始头结点的值就是要删除的,就来一个del;如果头结点就是空,那就返回空。cur是head,进行循环,cur.next不是空,就...原创 2019-02-20 11:46:26 · 356 阅读 · 0 评论 -
Leetcode——454. 四数相加 II
给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]...原创 2019-02-19 21:55:30 · 564 阅读 · 0 评论 -
Leetcode——350. 两个数组的交集 II
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。思路:这道题和上一道的差...原创 2019-02-19 19:34:36 · 272 阅读 · 0 评论 -
Leetcode——349. 两个数组的交集
给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。思路1:刚学完set()集合,就用上了,由于问题中的元素是唯...原创 2019-02-19 18:34:29 · 262 阅读 · 0 评论 -
Leetcode——3. 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...原创 2019-02-16 15:22:16 · 421 阅读 · 1 评论 -
Leetcode——34. 在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], targ...原创 2019-02-16 11:36:01 · 334 阅读 · 0 评论 -
Leetcode——二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], targ...原创 2019-02-16 11:13:16 · 523 阅读 · 0 评论 -
Leetcode——167. 两数之和 II - 输入有序数组
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], targe...原创 2019-02-15 22:13:09 · 206 阅读 · 0 评论 -
Leetcode——215. 数组中的第K个最大元素
在未排序的数组中找到第 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 ≤ 数组的长度。思路:1.能直接解决的时候就一个sor...原创 2019-02-15 21:53:36 · 305 阅读 · 0 评论 -
Leetcode——求众数
2.求众数给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2思路1:class Solution: def majorityElement(self, nums): ...原创 2019-02-15 20:41:57 · 311 阅读 · 0 评论 -
Leetcode——求三数之和
数组1.求三数之和给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]思路:排序固...原创 2019-02-15 20:39:34 · 838 阅读 · 0 评论 -
Leetcode——求缺失的第一个正数
数组1.求三数之和2.求众数3.求缺失的第一个正数链表1.环形链表2.合并k个排序链表原创 2019-02-14 16:37:21 · 351 阅读 · 0 评论 -
Leecode——合并两个有序数组
88原创 2019-02-14 10:33:13 · 343 阅读 · 0 评论 -
leetcode——颜色分类
7588215原创 2019-02-07 20:53:00 · 299 阅读 · 0 评论 -
Leetcode——移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为...原创 2019-02-06 21:50:24 · 200 阅读 · 0 评论 -
Leetcode26——删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums ...原创 2019-02-06 21:29:51 · 458 阅读 · 0 评论 -
Leetcode——移动零(python,c++)
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:1.我们可以把数组中不是零的数字给放入新的数组当中,设定一个非零的指针索引,后面都用来存放0.class Solution: def mov...原创 2019-02-06 14:26:04 · 533 阅读 · 0 评论