
Leetcode
落木~
这个作者很懒,什么都没留下…
展开
-
Leetcode刷题小分队Week5 - 56. 合并区间
56. 合并区间题目[中等] 给出一个区间的集合,请合并集合中所有重叠的区间。示例 1:输入: intervals = [[1,3],[2,6],[8,10],[15,18]]输出: [[1,6],[8,10],[15,18]]解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入: intervals = [[1,4],[4,5]]输出: [[1,5]]解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。思路1)考虑两区间可能原创 2020-12-20 21:16:13 · 141 阅读 · 1 评论 -
Leetcode编程实践 - 查找算法专题2
文章目录一. 查找算法二. 查找算法的应用1. 两数之和15. 三数之和16. 最接近的三数之和18. 四数之和49. 字母异位词分组149. 直线上最多的点数219. 存在重复元素 II220. 存在重复元素 III447. 回旋镖的数量454. 四数相加 II一. 查找算法二. 查找算法的应用1. 两数之和A)题目描述B)思路C)代码时间复杂度O(),空间复杂度O()在这里插入代码片15. 三数之和A)题目描述B)思路C)代码时间复杂度O(),空间复杂度O()在这里插入原创 2020-08-29 00:09:22 · 305 阅读 · 0 评论 -
Leetcode编程实践 - 查找算法专题1(二分/字典/集合)
文章目录一. 查找算法1.1 有序考虑二分1.2 空间换时间,多用字典1.3 巧用Python的内置函数二. 查找算法的应用35. 搜索插入位置202. 快乐数 √242. 有效的字母异位词205. 同构字符串290. 单词规律349. 两个数组的交集350. 两个数组的交集 II410. 分割数组的最大值 √451. 根据字符出现频率排序540. 有序数组中的单一元素 √一. 查找算法1.1 有序考虑二分看到有序数组,考虑二分,二分时需注意边界二分经典写法1.2 空间换时间,多用字典字典排序原创 2020-08-26 00:36:19 · 550 阅读 · 0 评论 -
Leetcode编程实践 - 动态规划(300/674/198/213/72/5/516)
当看到题目没有什么好想法,且题目涉及最大/最小问题时,可以考虑DP(小Tip: 为了方便初始化,有时DP多设+1长度)文章目录一. 动态规划1.1 动态规划的步骤:1.2 举个栗子 - 最长上升子序列A)题目描述B)套思路C)代码二. DP的应用1. 最长连续递增序列A)题目描述B)思路C)代码2. 打家劫舍A)题目描述B)思路C)代码3. 打家劫舍IIA)题目描述B)思路C)代码4. 编辑距离A)题目描述B)思路C)代码5. 最长回文子串A)题目描述B)思路C)代码三. 参考资料一. 动态规划1.原创 2020-08-22 23:24:48 · 180 阅读 · 0 评论 -
Leetcode编程实践 - 分治算法(169/53/50)
通常,我们在做数据结构之外的题时会感觉比较吃力,此时就要考虑常见的分治和动态规划思想了(递归/迭代是其实现方式)。首先看一看学一学分治!1. 分治的理论1.1 分治的思想分治自顶向下,分而治之(常用递归)分将规模大的问题分解成较小规模的子问题治递归地求解子问题(若子问题规模足够小,停止递归进行求解)合将子问题的解合并成原问题的解1.2 典型场景 ☆具体用法联想一下归并排序1) 二分法或其变型结题思路:折半折半查找缩小范围易错点:移动到左右边界.原创 2020-08-19 23:30:54 · 411 阅读 · 0 评论 -
Facebook面试题专题1 - leetcode88. Merge Sorted Array★/278. First Bad Version - Easy
88. Merge Sorted Array微软实习面试题题目描述给定两个有序整数数组nums1和nums2,合并两者成一个有序数组。nums1和nums2的元素数目分别是m和n。假设nums1有足够空间(≥m+n)来容纳来自于nums2的元素。例子Input:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3...原创 2018-12-05 19:51:52 · 248 阅读 · 0 评论 -
Facebook面试题专题3 - leetcode238. Product of Array Except Self/56. Merge Intervals
238. Product of Array Except Self题目描述给定一个n个元素的数组nums(n > 1),返回数组output。其中output[i] 等于除了元素nums[i]的其余元素的乘积。要求:不要分治,时间复杂度O(n)。最好常数空间 ~例子Input: [1,2,3,4]Output: [24,12,8,6]思想 (剑指offer原题)...原创 2018-12-08 20:39:50 · 190 阅读 · 0 评论 -
Facebook面试题专题4 - leetcode75. Sort Colors
75. Sort Colors英语流利说面试题题目描述(三色排序)给出一个由红、白、蓝三种颜色组成的数组,把相同颜色的元素放到一起,并整体按照红、白、蓝的顺序。用0表示红色,1表示白色,2表示蓝色。例子Input: [2,0,2,1,1,0]Output: [0,0,1,1,2,2]思想(法1) - 遍历两遍第一遍可以用三个指针分别对0、1和2进行计数;第二遍赋值(法2...原创 2018-12-08 22:17:14 · 178 阅读 · 0 评论 -
DFS+回溯专题12 - leetcode95. Unique Binary Search Trees II/394. Decode String - Mark
95. Unique Binary Search Trees II题目描述给定整数n,产生存储1…n的结构上唯一的二叉搜索树。例子Input: 3Output:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]思想解法...原创 2018-12-12 21:32:15 · 148 阅读 · 0 评论 -
Facebook面试题专题2 - leetcode98. Validate Binary Search Tree/173. Binary Search Tree Iterator - Mark
98. Validate Binary Search Tree题目描述给定一颗二叉树,判断其是否是有效的二叉搜索树。二叉搜索树:1)节点的左子树只包含小于该节点的值;2)节点的右子树只包含大于该节点的值;3)左右子树都是二叉搜索树。例子思想只比较根节点值及其左右节点的值(×),因为要保证左子树所有值都小于根节点。所以,记录某颗树不能逾越的最小值和最大值。1)如果当前结点...原创 2018-12-06 15:29:50 · 227 阅读 · 0 评论 -
贪心专题1 - leetcode455. Assign Cookies/435. Non-overlapping Intervals
455. Assign Cookies题目描述假设你是一位很棒的家长,想给孩子们一些饼干(每个孩子最多只能给一块饼干)。每个孩子 i 都有一个胃口值 gi (为正数),表示满足孩子胃口的饼干最小尺寸;每块饼干 j 的尺寸为 sj 。若 sj >= gi ,将该饼干 j 分配给孩子 i ,则孩子会得到满足。目标:尽可能满足更多的孩子,并输出这个最大数值。例子示例 1:输入...原创 2018-12-20 12:27:12 · 205 阅读 · 0 评论 -
Google面试题专题5 - leetcode66. Plus One/326. Power of Three/883. Projection Area of 3D Shapes - Easy
66. Plus One题目描述给定一非空的数字数组,代表一非负整数。将该整数加1。整数存储方式为:最高位数字存储在数组首个元素,数组中每个元素包含一个数字。假设无前导0。例子Example 1:Input: [1,2,3]Output: [1,2,4]Explanation: The array represents the integer 123.Example ...原创 2018-11-28 16:21:05 · 165 阅读 · 0 评论 -
Google面试题专题7 - leetcode930. Binary Subarrays With Sum/228. Summary Ranges
930. Binary Subarrays With Sum题目描述数组A仅包含0和1,有多少和为S的非空子数组。例子Input: A = [1,0,1,0,1], S = 2Output: 4Explanation:The 4 subarrays are bolded below:[1,0,1][1,0,1][0,1,0,1][1,0,1]思想非空子数组,起...原创 2018-12-02 21:14:28 · 182 阅读 · 1 评论 -
Google面试题专题6 - leetcode230. Kth Smallest Element in a BST/139. Word Break
230. Kth Smallest Element in a BST题目描述给定一颗二叉搜索树,编写函数kthSmallest找到第k小元素。(1 ≤ k ≤ BST的总元素个数)例子Example 1:Input: root = [3,1,4,null,2], k = 1Output: 1Example 2:Input: root = [5,3,6,2,4,null,null...原创 2018-11-29 20:38:41 · 292 阅读 · 0 评论 -
Google面试题专题10 - leetcode857. Minimum Cost to Hire K Workers
857. Minimum Cost to Hire K Workers - Hard题目描述有 N 名工人。第 i 名工人的工作质量为 quality[i],期望的最低工资为 wage[i]。现在我们想雇佣 K 名工人组成一个工资组,且必须按照以下规则向他们支付工资:1)对工资组中的每名工人,应当按其工作质量与同组其他工人的工作质量的比值来支付工资;2)工资组中的每名工人至少应当得到他...原创 2018-12-04 11:18:52 · 845 阅读 · 0 评论 -
Google面试题专题9 - leetcode224. Basic Calculator
224. Basic Calculator - Hard百度面试题题目描述计算器功能。字符串表达式可能包含:(、)、+、-、非负整数和空格。例子Example 1:Input: “1 + 1”Output: 2Example 2:Input: " 2-1 + 2 "Output: 3Example 3:Input: “(1+(4+5+2)-3)+(6+8)”...原创 2018-12-04 10:13:38 · 362 阅读 · 0 评论 -
Google面试题专题8 - leetcode57. Insert Interval
57. Insert Interval题目描述例子思想二分查找,找到newInterval两个端点的位置(≤该值的最后一个数的位置)。解法原创 2018-12-04 10:12:30 · 438 阅读 · 0 评论 -
Google面试题专题2 - leetcode48. Rotate Image/31. Next Permutation/23. Merge k Sorted Lists
给定一个n*n的2维矩阵,顺时针旋转矩阵90度。(原地旋转)原地旋转:直接修正矩阵,不要创建额外的2维矩阵。刚开始思路:建立额外空间O(n);改进:拆分旋转90°的操作。关于轴、对角线的操作容易实现。...原创 2018-11-19 21:39:42 · 217 阅读 · 0 评论 -
Google面试题专题4 - leetcode41. First Missing Positive/25. Reverse Nodes in k-Group
41. First Missing Positive题目描述给定一无序整数数组,找到丢失的最小正整数。要求时间复杂度O(n),空间复杂度O(1)。例子Example 1:Input: [1,2,0]Output: 3Example 2:Input: [3,4,-1,1]Output: 2Example 3:Input: [7,8,9,11,12]Outp...原创 2018-11-21 20:35:38 · 169 阅读 · 0 评论 -
排序专题1 - leetcode215. TopK/347. Top K Frequent Elements/451. Sort Characters By Frequency
215. Kth Largest Element in an Array题目描述找出数组中第k大的数。假设k是有效的,即 1 ≤ k ≤ 数组长度。例子Example 1:Input: [3,2,1,5,6,4] and k = 2Output: 5Example 2:Input: [3,2,3,1,2,4,5,5,6] and k = 4Output: 4思...原创 2018-12-14 21:49:25 · 222 阅读 · 0 评论 -
Facebook面试题专题5 - leetcode133. Clone Graph/76. Minimum Window Substring - Hard
133. Clone Graph题目描述给定一个图,返回它的深拷贝。图的每个结点包含一个label和neighbors列表(给定的结点和neighbor间有边连接)。例子略思想为了避免循环访问导致死循环,用一个字典dic(集合也可以)记录已被访问过的结点。解法# Definition for a undirected graph node# class Undirecte...原创 2018-12-09 22:22:42 · 188 阅读 · 0 评论 -
树专题1 - leetcode101. Symmetric Tree/104. Maximum Depth of Binary Tree - Easy
101. Symmetric Tree题目描述判断是否是镜像二叉树(对称)例子思想(递归)定义一辅助函数,输入为left和right,判断是否相等。(迭代)定义两个栈,层次遍历时判断,并分别从左向右和从右向左存储。解法1递归# Definition for a binary tree node.# class TreeNode(object):# def _...原创 2019-02-13 17:01:36 · 241 阅读 · 0 评论 -
DFS/BFS专题1 - leetcode241. Different Ways to Add Parentheses/279. Perfect Squares - Mark
241. Different Ways to Add Parentheses题目描述给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。例子示例 1:输入: “2-1-1”输出: [0, 2]解释:((2-1)-1) = 0(2-(1-1)) = 2示例 2:...原创 2019-01-13 16:04:50 · 211 阅读 · 0 评论 -
二分专题2 - leetcode153. Find Minimum in RotatedSorted Array/34. Find First and Last Position of Element
153. Find Minimum in Rotated Sorted Array题目描述假设按照升序排序的数组,在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。请找出其中最小的元素。(假设数组中不存在重复元素)例子Example 1:Input: [3,4,5,1,2]Output: 1...原创 2019-01-12 22:07:59 · 154 阅读 · 0 评论 -
贪心专题5 - leetcode53. Maximum Subarray/122. Best Time to Buy and Sell Stock II
122. Best Time to Buy and Sell Stock II题目描述给定一个数组,它的第 i 个元素是给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。例子Example 1:Input: [7,1,5,3,6,4]Out...原创 2018-12-26 09:34:48 · 194 阅读 · 0 评论 -
二分专题1 - leetcode744. Find Smallest Letter Greater Than Target/540. Single Element in a Sorted Array
744. Find Smallest Letter Greater Than Target题目描述给定一只包含小写字母的有序数组letters 和一个目标字母 target,寻找有序数组里面比目标字母大的最小字母。数组里字母的顺序是循环的。举个例子,如果目标字母target = ‘z’ 并且有序数组为 letters = [‘a’, ‘b’],则答案返回 ‘a’。例子Input...原创 2019-01-04 18:44:33 · 147 阅读 · 0 评论 -
贪心专题4 - leetcode392. Is Subsequence/665. Non-decreasing Array
392. Is Subsequence题目描述给定字符串s和字符串t,判断s是否是t的子序列。子序列:删除原始字符串的某些字符,不改变相对位置顺序。(例如,“ace” 是"abcde" 的子串,而 “aec” 不是)假设s和t中只有小写英文字母,len(t) <= 500000且len(s) <= 100例子Example 1:s = “abc”, t = “a...原创 2018-12-25 16:01:31 · 190 阅读 · 0 评论 -
贪心专题3 - leetcode763. Partition Labels/605. Can Place Flowers - Mark
统计连续0的数量1)开头/结尾,连续2/3 —— 种1个;连续4/5 —— 种2个;…2)连续3/4个 —— 种1个;连续5/6个 —— 种2个;…Trick:对开头和结尾进行填充class Solution(object): def canPlaceFlowers(self, flowerbed, n): """ :type flowerbed: ...原创 2018-12-25 11:43:31 · 194 阅读 · 0 评论 -
DFS+回溯专题15 - leetcode464. Can I Win博弈论
464. Can I Win题目描述2个玩家轮流从1…maxChoosableInteger中最优地选择1个数字。第一个玩家先选,第二个玩家后选,每个人选过的数字之后就不能再选。2个玩家谁先加使得两人总和≥desiredTotal谁就赢。问第一个玩家是否可以赢得比赛?例子Input:maxChoosableInteger = 10desiredTotal = 11Output:...原创 2018-12-19 09:58:58 · 242 阅读 · 0 评论 -
贪心专题6 - leetcode121. Best Time to Buy and Sell Stock/69. Sqrt(x) - Easy
121. Best Time to Buy and Sell Stock题目描述给定一个数组,第 i 个元素是给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。例子Example 1:Input: [7,1,5,3,6,4]Output: 5Explanation: Buy...原创 2018-12-29 16:26:32 · 187 阅读 · 0 评论 -
DFS+回溯专题14 - leetcode756. Pyramid Transition Matrix/79. Word Search - Medium
756. Pyramid Transition Matrix题目描述给定一个bottom字符串,和allowed数组。allowed数组中每一个字符串都含有一个三元组(A,B,C),表示一种规则:C的左孩子可以是A,右孩子可以是B。判断给定bottom和allowed,是否能构造一个金字塔的结构,满足allowed的规则,并且金字塔的最后一层就是bottom字符串。例子输入:...原创 2018-12-18 19:46:39 · 317 阅读 · 0 评论 -
贪心专题2 - leetcode452. 用最少数量的箭引爆气球/406.根据身高重建队列 - Mark
452. Minimum Number of Arrows to Burst Balloons题目描述在二维空间有许多球形气球。对每个气球,输入是水平方向上气球直径的开始和结束坐标(开始坐标总是小于结束坐标)。记一个气球直径的开始和结束坐标为 xstart,xend。在坐标x处射出一支箭,若 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一...原创 2018-12-23 11:14:06 · 263 阅读 · 0 评论 -
DFS+回溯专题11 - leetcode257. Binary Tree Paths/93. Restore IP Addresses
257. Binary Tree Paths题目描述给定二叉树,返回所有根节点-叶节点路径。例子思想截止条件:到达叶节点(not root.left and not root.right)解法# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):...原创 2018-12-11 16:48:33 · 189 阅读 · 0 评论 -
DFS+回溯专题10 - leetcode784. Letter Case Permutation/77. Combinations
784. Letter Case Permutation题目描述给定字符串S,我们可以把每个字母转成小写或大写,创造其他字符。返回所有可能的字符串的列表。例子Input: S = “a1b2”Output: [“a1b2”, “a1B2”, “A1b2”, “A1B2”]Input: S = “3z4”Output: [“3z4”, “3Z4”]Input: S = ...原创 2018-12-10 15:43:06 · 226 阅读 · 0 评论 -
DFS+回溯专题13- leetcode341. Flatten Nested List Iterator
341. Flatten Nested List Iterator题目描述给定一个嵌套的整数列表,用迭代器来flatten它。每个元素要么是整数,要么是列表(同理,元素要么是整数,要么是其他列表)例子Example 1:Input: [[1,1],2,[1,1]]Output: [1,1,2,1,1]Explanation: By calling next repeated...原创 2018-12-15 22:23:53 · 284 阅读 · 0 评论 -
Google面试题专题3 - leetcode33. Search in Rotated Sorted Array/11. Container With Most Water - 经典
leetcode33. Search in Rotated Sorted Array面试常考题!(微软、头条和百度)题目描述假设一升序数组以某基准数进行旋转。例如[0,1,2,4,5,6,7] → [4,5,6,7,0,1,2]查找目标数字。如果在数组中出现返回它的索引,否则返回-1.假设数组中没有重复数字,时间复杂度要求O(logn).例子Example 1:Inp...原创 2018-11-20 16:27:48 · 258 阅读 · 0 评论 -
DP专题8 - leetcode354. Russian Doll Envelopes/338. Counting Bits
354. Russian Doll Envelopes题目描述有许多给定长宽(w, h)的信封。当且仅当当前信封的长宽都大于另一个的时,才可以把另一个信封放入当前信封中。(不允许翻转信封)问:你可以套的最大信封数?例子Input: [[5,4],[6,4],[6,7],[2,3]]Output: 3Explanation: The maximum number of enve...原创 2018-11-08 17:12:07 · 168 阅读 · 0 评论 -
DFS+回溯专题9 - leetcode282. Expression Add Operators/301. Remove Invalid Parentheses - Hard
282. Expression Add Operators题目描述给定一个字符串(仅包含数字0-9)和一个目标值,请在数字之间添加二元运算符:’+’、’-’ 和 ‘*’,使得运算结果为目标值。例子Example 1:Input: num = “123”, target = 6Output: [“1+2+3”, “123”]Example 2:Input: num = “2...原创 2018-10-22 20:01:01 · 196 阅读 · 0 评论 -
模拟专题4 - leetcode12. Integer to Roman/68. Text Justification★
12. Integer to Roman题目描述罗马数字由七个不同的符号表示:I,V,X,L,C,D和M.Symbol ValueI 1V 5X 10L 50C 100D 500M 1000输入...原创 2018-10-19 14:50:22 · 182 阅读 · 0 评论 -
DFS+回溯专题5 - leetcode39. Combination Sum/40. Combination Sum II/216. Combination Sum III
39. Combination Sum题目描述给定候选数集(无重复)和目标值target,找出候选集中数字累加和为target的组合。(候选集中数字可以用无限次)例子Example 1:Input: candidates = [2,3,6,7], target = 7,A solution set is:[[7],[2,2,3]]Example 2:Input: ca...原创 2018-10-09 10:23:24 · 218 阅读 · 0 评论