LeetCode
章小幽
这个作者很懒,什么都没留下…
展开
-
LeetCode-88.合并两个有序数组
88.合并两个有序数组给定两个有序整数数组nums1和nums2,将nums2合并到nums1中,使得num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0]...原创 2018-06-27 20:55:25 · 189 阅读 · 0 评论 -
LeetCode-538. 把二叉搜索树转换为累加树
538.把二叉搜索树转换为累加树给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: ...原创 2019-02-21 16:22:25 · 426 阅读 · 0 评论 -
LeetCode-543. 二叉树的直径
543.二叉树的直径给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。注...原创 2019-02-21 17:15:35 · 320 阅读 · 0 评论 -
LeetCode-121. 买卖股票的最佳时机
121.买卖股票的最佳时机给定一个数组,它的第i个元素是一支给定股票第i天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利...原创 2019-02-21 19:52:42 · 110 阅读 · 0 评论 -
LeetCode-21. 合并两个有序链表
21.合并两个有序链表将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解题思路:遇到链表的题就想到操作指针。curr指针指向新链表的尾节点,l1指针指向l1的头节点,l2指针指向l2的头节点。通过...原创 2019-02-21 20:45:56 · 133 阅读 · 0 评论 -
LeetCode-70. 爬楼梯
70.爬楼梯假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定n是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 +...原创 2019-02-21 21:23:26 · 130 阅读 · 0 评论 -
LeetCode-53. 最大子序和
53.最大子序和给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。解题思路:动态规划。令dp[i]表示以...原创 2019-02-21 22:16:40 · 107 阅读 · 0 评论 -
LeetCode-101. 对称二叉树
101.对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[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说明:如果你可以...原创 2019-02-22 14:42:55 · 93 阅读 · 0 评论 -
LeetCode-437. 路径总和 III
437.路径总和 III给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,nu...原创 2019-02-22 19:54:41 · 309 阅读 · 0 评论 -
LeetCode-572. 另一个树的子树
572.另一个树的子树给定两个非空二叉树s和t,检验s中是否包含和t具有相同结构和节点值的子树。s的一个子树包括s的一个节点和这个节点的所有子孙。s也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / \ 1 2返回true,因为...原创 2019-02-22 21:14:06 · 275 阅读 · 0 评论 -
LeetCode-1. 两数之和
1.两数之和给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, ...原创 2019-02-22 21:49:26 · 113 阅读 · 0 评论 -
LeetCode-198. 打家劫舍
198.打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额...原创 2019-02-22 22:36:18 · 108 阅读 · 0 评论 -
LeetCode-287. 寻找重复数 Python3版本
287.寻找重复数给定一个包含n+ 1 个整数的数组nums,其数字都在 1 到n之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。 只能使用额外的O(1)...原创 2019-02-27 15:51:19 · 229 阅读 · 0 评论 -
LeetCode-337. 打家劫舍 III Python3版本
337.打家劫舍 III在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示...原创 2019-02-27 16:59:58 · 671 阅读 · 0 评论 -
LeetCode-102. 二叉树的层次遍历 Python3版本
102.二叉树的层次遍历给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解题思路:典型的广度优先搜索。使用no...原创 2019-02-27 17:24:33 · 127 阅读 · 0 评论 -
LeetCode-48. 旋转图像 Python3版本
48.旋转图像给定一个n×n的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]],原地旋转输入矩阵,使其变为:[ [7,4,1], [8,5,2]...原创 2019-02-28 15:32:21 · 118 阅读 · 0 评论 -
LeetCode-39. 组合总和 Python3版本
39.组合总和给定一个无重复元素的数组candidates和一个目标数target,找出candidates中所有可以使数字和为target的组合。candidates中的数字可以无限制重复被选取。说明:所有数字(包括target)都是正整数。 解集不能包含重复的组合。示例1:输入: candidates = [2,3,6,7], target ...原创 2019-02-28 16:14:36 · 184 阅读 · 0 评论 -
LeetCode-62. 不同路径 Python3版本
62.不同路径一个机器人位于一个m x n网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?说明:m和n的值均不超过 100。示例1:输入: m = 3, n = 2...原创 2019-02-28 16:36:16 · 96 阅读 · 0 评论 -
LeetCode-215. 数组中的第K个最大元素 Python3版本
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 ≤ ...原创 2019-02-28 17:08:47 · 168 阅读 · 0 评论 -
LeetCode-64. 最小路径和 Python3版本
64.最小路径和给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解题思路:动态规划算法。令dp[i][j]表示从左上角到grid[i][...原创 2019-02-28 17:29:37 · 136 阅读 · 0 评论 -
LeetCode-438. 找到字符串中所有字母异位词
438.找到字符串中所有字母异位词给定一个字符串s和一个非空字符串p,找到s中所有是p的字母异位词的子串,返回这些子串的起始索引。字符串只包含小写英文字母,并且字符串s和p的长度都不超过 20100。说明:字母异位词指字母相同,但排列不同的字符串。 不考虑答案输出的顺序。示例1:输入:s: "cbaebabacd" p: "abc"输出:...原创 2019-02-25 10:49:18 · 242 阅读 · 0 评论 -
LeetCode-20. 有效的括号
20.有效的括号给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"...原创 2019-02-25 11:23:24 · 77 阅读 · 0 评论 -
LeetCode-141. 环形链表
141.环形链表给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果pos是-1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [...原创 2019-02-25 15:23:07 · 95 阅读 · 0 评论 -
LeetCode-771. 宝石与石头
771.宝石与石头给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J和S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = "aA", S = "aAAbbbb"输出: 3示例 2:输入: J ...原创 2019-02-20 10:23:49 · 106 阅读 · 0 评论 -
LeetCode-461. 汉明距离
461.汉明距离两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数x和y,计算它们之间的汉明距离。注意:0 ≤x,y< 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。解题思...原创 2019-02-20 10:59:39 · 122 阅读 · 0 评论 -
LeetCode-155. 最小栈
155.最小栈设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);mi...原创 2019-02-25 16:12:31 · 119 阅读 · 0 评论 -
LeetCode-234. 回文链表
234.回文链表请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解题思路:利用快慢指针将链表前一半进行原地翻转,然后判断翻转后的链表与原链表后半段是否一样。Python3代码如下:...原创 2019-02-25 17:29:13 · 108 阅读 · 0 评论 -
LeetCode-309. 最佳买卖股票时机含冷冻期
309.最佳买卖股票时机含冷冻期给定一个整数数组,其中第i个元素代表了第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3 ...原创 2019-03-04 21:42:34 · 197 阅读 · 0 评论 -
LeetCode-11. 盛最多水的容器
11.盛最多水的容器给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai) 和 (i, 0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在...原创 2019-03-04 22:07:59 · 143 阅读 · 0 评论 -
LeetCode-96. 不同的二叉搜索树
96.不同的二叉搜索树给定一个整数n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1...原创 2019-03-01 15:59:05 · 84 阅读 · 0 评论 -
LeetCode-494. 目标和
494.目标和给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S。现在你有两个符号+和-。对于数组中的任意一个整数,你都可以从+或-中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。示例 1:输入: nums: [1, 1, 1, 1, 1], S: 3输出: 5解释: -1+1+1+1+1 = 3+...原创 2019-03-01 17:34:20 · 182 阅读 · 0 评论 -
LeetCode-160. 相交链表
160.相交链表编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8...原创 2019-02-25 20:42:37 · 97 阅读 · 0 评论 -
LeetCode-581. 最短无序连续子数组
581.最短无序连续子数组给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。说明 :输入的数组长度...原创 2019-02-25 21:27:03 · 111 阅读 · 0 评论 -
LeetCode-560. 和为K的子数组
560.和为K的子数组给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数k的范围是[-1e7, 1e7]。...原创 2019-03-05 08:36:31 · 158 阅读 · 0 评论 -
LeetCode-561. 数组拆分 I
给定长度为2n的数组, 你的任务是将这些数分成n对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).提示:n是正整数,范围在 [1, 10000...原创 2019-02-20 15:04:17 · 111 阅读 · 0 评论 -
LeetCode-338. 比特位计数 Python3版本
338.比特位计数给定一个非负整数num。对于0 ≤ i ≤ num范围中的每个数字i,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例2:输入: 5输出: [0,1,1,2,1,2]进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描...原创 2019-02-25 21:57:08 · 208 阅读 · 0 评论 -
LeetCode-406. 根据身高重建队列 Python3版本
406.根据身高重建队列假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(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...原创 2019-02-25 22:35:17 · 869 阅读 · 0 评论 -
LeetCode-617. 合并二叉树
617.合并二叉树给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:输入: Tree 1 Tree 2 ...原创 2019-02-20 16:13:27 · 124 阅读 · 0 评论 -
LeetCode-104. 二叉树的最大深度
104.二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。解题思路:使用递归方法(深度优先搜索)。递归的终...原创 2019-02-20 16:47:57 · 88 阅读 · 0 评论 -
LeetCode-49. 字母异位词分组
49.字母异位词分组给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","t原创 2019-03-01 22:14:59 · 158 阅读 · 0 评论