004. Longest Palindromic Substring10 分钟阅读Question is Longest Palindromic Substring. 假设 S(i, j) 为问题的解,即从位置 i 到 j …阅读全文
006. Reverse Integer5 分钟阅读这道题也偏容易, 但要注意题目提示的那几种特殊情况. 这体现了思维是否严谨. 整数反转, 思路很简单, 原数的个位 ==> 结果的最高位. …阅读全文
009. Regular Expression Matching10 分钟阅读讨厌这种不清不楚的题目。 . 代表任意单字符,* 可以代表将前面的字符去掉,也可以代表是对前面字符的重复(数目无限)。 下面分析题目中给出的例子: aa a …阅读全文
011. Integer to Roman10 分钟阅读昨天那道题的逆向。 重新回顾一下 Roman numberals 的概念: Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 …阅读全文
013. Longest Common Prefix5 分钟阅读最近怎么接连都是字符串处理,没有太多算法理论,但是实用性非常强。我敢说大部分非服务器端 C++ 程序员的工作 80% 都是字符串处理,而 LeetCode 这几 …阅读全文
015. 3Sum Closest5 分钟阅读这道题出的让人不解气,怎么说呢?我苦思冥想很久,发现没有特别聪明的方法解决。最后无奈查了一下,发现该题最佳时间复杂度是 O(n^2),顿时心血上涌,痛不欲生。 …阅读全文
017. 4Sum10 分钟阅读这道题虽然是一道中等难度的题,但是麻烦程度完全不亚于 Hard 难度的。 这道题我拖延了三天,总共提交了有近 20 次,从最笨的方法开始尝试,直到现在这个方案。 …阅读全文
021. Generate Parentheses5 分钟阅读针对这道题,我的想法很多。 首先想到过构建一个语法树,因为每次只有两种选择,所以整好是个二叉树的结构。 然后我还想到用回溯法,可以利用栈来检验当前的字符串是否合 …阅读全文
024. Reverse Nodes in k-Group10 分钟阅读首先,回顾一个基本的问题,单链表如何逆序? 1->2->3->4->5 ^ root 想要逆序,最直接的想法,就是希望上图中的链表指向 …阅读全文
026. Remove Element5 分钟阅读今天早上的脑子不够灵活,所以虽然思路对了,代码却写的超级啰嗦。 在线性数组中,删除某元素,乍一想免不了要移动大量元素了,但题中却给了这么一句话: The …阅读全文
027. Implement strStr()5 分钟阅读这道题不要去考虑什么 Rabin-Karp, KMP 或是 Boyer-Moore 算法,这就是一道 Easy 难度的基础题。 考察的是对于字符串指针的使用。 …阅读全文
030. Next Permutation10 分钟阅读此题也存在逗逼的写法: std::next_permutation(num.begin(), num.end()); 仅此一句话,保证以最高效的姿势 AC。 所 …阅读全文
032. Search in Rotated Sorted Array5 分钟阅读还记得那道恶心的同类题吗?[41. Search in Rotated Sorted Array II](../41. Search in Rotated …阅读全文
034. Search Insert Position5 分钟阅读初看这道题的时候, 完全没想到什么二分搜索算法, 秉承我一贯的怎么简单怎么来的原则. 几乎不假思索, 写下如下代码: for (int i = 0; i != …阅读全文
036. Sudoku Solver15 分钟阅读这道题我拿到手就想到了 回溯+DFS 的思路。 因为这就是咱们人工去解数独的方法,看到空的格子,首先在脑海里列出能够放的数字列表,然后先试第一个,接着看后续的格 …阅读全文
037. Count and Say5 分钟阅读这道题也没有着重考察什么知识点,顶多是考察字符串处理的经验。 我非常喜欢 C 语言,工作三年,有那么两年都是用纯 C 来做项目的,但为何后来投靠了 C++ 呢? …阅读全文
038. Combination Sum10 分钟阅读这道题很啰嗦,条件又很多,例子还容易让人误解。有种摸不着头脑的感觉。 我稍微提炼一下: 一个正数数组,一个正数,从数组中摘出若干数(可重复提取),但摘出的数组成 …阅读全文
039. Combination Sum II5 分钟阅读这题的主要思路参考 [75. Combination Sum](../75. Combination Sum), 大同小异,涉及的思想,依旧是 DFS。 要额外 …阅读全文
040. First Missing Positive5 分钟阅读这道题,能把题意看明白,就很不容易了。 1,2,0 -> 0,1,2,3 -> size == 3 ^ 3,4,-1,1 -> …阅读全文
041. Trapping Rain Water5 分钟阅读做这道题之前,我觉得应该回顾一下[33. Container With Most Water](../33. Container With Most …阅读全文
042. Multiply Strings5 分钟阅读这道题就是考察大数乘法了。 我们还是从简单的例子来分析: 1234567 * 8901234 想想,乘法是如何运算的,用比较小的数举例,更好理解: 23 * …阅读全文
044. Jump Game II5 分钟阅读这道题依旧遵循 [68. Jump Game](../68. Jump Game) 的思路,当时我并未理解所用方法应该属于哪种经典算法的范畴。 今天看来应该属于 …阅读全文
045. Permutations5 分钟阅读好吧,我承认,这道题我做的也太偷懒了。就因为我熟悉STL,知道有这么个排列组合算法函数,就直接使用了。 效率应该还是要稍微弱点,因为我先进行了一次排列,然后才开 …阅读全文
046. Permutations II5 分钟阅读又是排列组合,但使用 [34. Permutations](../34. Permutations) 中的解法却依然可以。 在那道题里,我说先偷个懒, …阅读全文
047. Rotate Image5 分钟阅读矩阵的旋转,这几乎是我天天都接触的问题,当然更广泛的是矩阵的转置,不过差别不大。 所以再次偷懒,因为之前看过类似的实现,所以写起来并不太困难。其实画个图,就特别 …阅读全文
049. Pow(x, n)5 分钟阅读这道题题干之简洁,令人乍舌。太简洁,以至于完全不知道从哪里着手。 半开玩笑的试试: double pow(double x, int n) { return …阅读全文
050. N-Queens10 分钟阅读八皇后问题,其实早在 [15. N-Queens II](../15. N-Queens II) 中就碰上了。更早还可以追溯到 CoolShell 谜题的第七 …阅读全文
051. N-Queens II5 分钟阅读这道题的经典程度无需赘述,请见八皇后问题 第一道 Hard 难度的题,我就给跪了,完全没思路。勉强看懂号称史上最经典的解法,然后将其改写为 c++11。 此处留 …阅读全文
052. Maximum Subarray5 分钟阅读这道题我一看到,我就想到了我的最爱——贪心算法,太典型了好么。 求拥有最大和的子序列,那么秉承贪心原则,假设初始解为A[0],那么我增加一个元素(A[1]),我 …阅读全文
053. Spiral Matrix5 分钟阅读m * n 的矩阵按螺旋顺序转为数组: 1 2 3 4 5 6 --> 1 2 3 6 9 8 7 4 5 7 8 9 我想到的是,直接用下标作为限制。m …阅读全文
054. Jump Game5 分钟阅读今天在外转了一天,过的太丰富,竟然没时间来上传代码。但这道题却很早就解出来,手机上AC了。总共才三行代码。 第一步,能够决定什么?决定你最远可以走到哪。细细想一 …阅读全文
055. Merge Intervals5 分钟阅读这道题应该如何着手? 首先我想到的是排序,因为如果所给数据如题目给出的例子一般有序,那非常容易: [1,3], [2,6], [8,10], [15,18] ^ …阅读全文
056. Insert Interval5 分钟阅读这道题仍然考察的是特殊的数据结构。 这个 Interval 本质上就是一个 std::pair. 最初的序列保证有序,那么查找 newInterval 将会很 …阅读全文
057. Length of Last Word5 分钟阅读当C++已经发展到11之际,各种处理字符串已经成了日常生活的一部分,遇到一道这样题,难免会感慨,擦,也太简单。 但要说三点: 如何理解 “If …阅读全文
058. Spiral Matrix II5 分钟阅读这道题我戏称为“迷宫题”。回忆一下小时候在公园里,是否遇到过这样一种简陋迷宫,迷宫里不断的转圈,最终你进入了一个圆圈的中心,可能有个小广场,小雕塑,或是小房子在 …阅读全文
061. Unique Paths5 分钟阅读刚看到这道题,有点摸不着头脑。你说最短路径,我可以想到 Dijkstra,但你问有多少种,的确有点懵。 我觉得,还是需要先简化问题:走到 End 需要多少步,那 …阅读全文
062. Unique Paths II5 分钟阅读还是老规矩,先看看[29. Unique Paths](../29. Unique Paths),那道题我开始尽量使用示意图去描述算法意图。自我感觉还算清楚。 …阅读全文
063. Minimum Path Sum5 分钟阅读这道题不就是我在 Unique Paths 里面提到的最短路径问题嘛。不过其实解法和那道题类似,我们还是采取划分子问题的方式来分析: 可以看到,在最后一步的选择 …阅读全文
069. Climbing Stairs5 分钟阅读这道题很经典,涉及到斐波那契数列的起源。故事来自于本专业最大的砖头《计算机程序设计艺术》,高老大所著。 说是1150年一个印度老僧 Gopala 和 金月 在研 …阅读全文
070. Simplify Path10 分钟阅读这是个好题目,很有实际需求。 /a/./b/../../c/ ^^ (1) /a/b/../../c/ ^^^^ (2) /a/../c/ ^^^^ (2) …阅读全文
071. Edit Distance15 分钟阅读此题乍看之下有点摸不着头脑,但其实属一道非常经典的题目。 有兴趣的童鞋可以看看这个 Stanford 的 Minimum Edit Distance 而这道小 …阅读全文
072. Set Matrix Zeroes5 分钟阅读矩阵题,问题可概括为:只要有一个元素等于0, 其所在行与所在列皆为0. 看上去挺容易嘛,没说有序的事,那就从头遍历呗,遇到等于0的,就将其行列全弄成0即可。 等 …阅读全文
073. Search a 2D Matrix5 分钟阅读这道题看似很简单,擦,意外真多啊。 我 submit 了不下5次,几乎把各种边界用例都搜集全了。所以说,小到二分查找算法,都有无数坑等着你。 矩阵只是个幌子,这 …阅读全文
076. Combinations5 分钟阅读这道题算中等难度真的不为过。 要注意,其结果有一个隐含的要求,每一项都是有序的(从小到大)。 看那例子:n=4, k=2,我们可以根据规律列个表: pos 0 …阅读全文
077. Subsets5 分钟阅读乍一看,还以为又是排列组合题,但细一看,发现并未要求排列,要求保持 non-descending 的顺序。而且 subset 参差不齐,却又涵盖各种情况。 …阅读全文
079. Remove Duplicates from Sorted Array II5 分钟阅读这道题是[24. Remove Duplicates from Sorted Array](../24. Remove Duplicates from …阅读全文
080. Search in Rotated Sorted Array II5 分钟阅读又是恶心的折半查找题。 题目中说这道题是根据 Search in Rotated Sorted Array 的扩展,可是我竟根本没遇到过这一道题,查了下,还在后 …阅读全文
081. Remove Duplicates from Sorted List II5 分钟阅读这道题没有太多可说的,属于基本题的扩展。 可以先参考前面的 [12. Remove Duplicates from Sorted List](../12. …阅读全文
082. Remove Duplicates from Sorted List5 分钟阅读这道题应该属于经典的"去重"系列里的吧. 很基础, 本不需要说什么, 但后来看了 Discuss 之后, 发现大家还关注内存回收的问题. 删 …阅读全文
083. Largest Rectangle in Histogram10 分钟阅读_ _ | | _ _ | | | | | |_| | | | | | |*|*|*| | | | |_|*|*|*| | | | | |*|*|*|_| | …阅读全文
084. Maximal Rectangle5 分钟阅读0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 对于上述这个矩阵,我们人脑是如何第一时间发现中间那坨 1 的呢?我觉得应该有下面 …阅读全文
086. Scramble String10 分钟阅读两个字符串 s1, s2, 问是否是 scramble. –> 定义问题的解为:S(s1, s2), s1,s2 的长度为 n (若不等, …阅读全文
087. Merge Sorted Array5 分钟阅读是否还记得这道题呢,都是 merge,算法思路上并无太大差别。 这道题还降低了点难度,因为没有链表那些指来指去的指针。 思路主要是利用 A 数组富裕的地方(题意 …阅读全文
088. Gray Code5 分钟阅读这道题应该是考察 grey code 的概念。 格雷码是怎么来的?二进制数011,加1的时候变成100,在老式装置上,这意味着三个位元都要转动,增加了出错的几 …阅读全文
089. Subsets II10 分钟阅读这道题有两个思路:一个就是基于 [63. Subsets](../63. Subsets) 的方案,只需要用一个 set 存储最后结果即可,(或者手动去 …阅读全文
090. Insertion Sort List5 分钟阅读关于这道题,我实在想不通为何被列入了 Medium 的行列,插入排序是知乎上有名的梗,如果这个算法不能在十分钟内流畅的写出来,应该万般羞愧的躲进活死人墓,苦练各 …阅读全文
092. Restore IP Addresses10 分钟阅读这道题的题意很好理解。 给你一堆数字: 25525511135 让你分割成符合要求的形式: 255.255.11.135 255.255.111.35 那么很自 …阅读全文
094. Unique Binary Search Trees II10 分钟阅读该题的第一版本,我几乎没有抓住问题的本质,而是纠结于卡特兰数的公式。见[06. Unique Binary Search Trees](../06. …阅读全文
095. Unique Binary Search Trees5 分钟阅读笔试遇上这道题,算是倒霉了。当我看到 1 2 5 14 这样规律的时候,我就知道是调出卡特兰数的时候了。(切分三角网格的算法) 悲剧的是,我根本没记住公式。于 …阅读全文
097. Validate Binary Search Tree5 分钟阅读这道题其实应该算是 Easy 难度的吧。 不过可以顺便复习一下 BST 的基本概念: 左边所有子节点的值都要小于当前节点 右边所有自节点的值都要大于当前节点 左 …阅读全文
098. Recover Binary Search Tree10 分钟阅读可以结合一下 [86. Validate Binary Search Tree](../86. Validate Binary Search Tree), 至少 …阅读全文
099. Same Tree5 分钟阅读思路(C++) 这道题没啥好说的,太简单了,尤其是刚做过昨天那道。我几乎直接在LeetCode上写下了答案,连本地编译都没用,抱着试试运气的心态,竟直接AC了。 …阅读全文
102. Binary Tree Zigzag Level Order Traversal5 分钟阅读昨天刚总结完所有常见的二叉树遍历,今天就再遇一道。 此题是非常明显的层次遍历,显然应该想到 BFS,但略有不同的是,它要求曲折输出。啥意思?就是说偶数行,要逆向 …阅读全文
103. Maximum Depth of Binary Tree5 分钟阅读思路(C++) 这道题应该算是基本题了。我顺便复习了一下二叉树的基本概念,并回顾了一下深度优先遍历和广度优先遍历两个重点知识。而这道题就是脱胎于前者的思想。 …阅读全文
104. Construct Binary Tree from Preorder and Inorder Traversal5 分钟阅读这道题与 [77. Construct Binary Tree from Inorder and Postorder Traversal](../77. …阅读全文
105. Construct Binary Tree from Inorder and Postorder Traversal10 分钟阅读构建二叉树,是打一开始我接触 LeetCode 关于二叉树的题时就在想的问题了。 这个问题不太好想,但它的逆问题却非常成熟了,即如何遍历一颗二叉树? 稍微总结一 …阅读全文
106. Binary Tree Level Order Traversal II5 分钟阅读这道题挺难,我今天在外用手机没解出来,很多思路都写不通。 第一道坎,在递归传值的问题,我将同级别的vector<int>作为参数传吧, …阅读全文
107. Convert Sorted Array to Binary Search Tree5 分钟阅读这道题使用递归,可以简单到只需要五行代码。但是如果不用呢?我想了几乎一天,也没有什么特别体面的主意。(不是没办法,是太不优美了。) BST 的概念倒是可以适当复 …阅读全文
108. Convert Sorted List to Binary Search Tree5 分钟阅读这道题别扭之处在于这个链表,但 LeetCode 的人性之处在于让其有序,因为排序属于另一个考点,让一道题的重心放在某一点上,更容易在短时间内考察一个程序员的基 …阅读全文
110. Minimum Depth of Binary Tree5 分钟阅读拿到这道题, 先考虑一个问题: 1 / 2 这个二叉树, 最短路径是几? 没人会回答1吧? 只有一条路径, 而其长度显然是2, 那么返回值应该就是2了吧. …阅读全文
111. Path Sum5 分钟阅读当一个思路要求的越来越多,办法越想越古怪,甚至需要你纠结是否违反某些编码常识的时候。你应该意识到,这条路可能走错了。 别急着继续另一条路,而是回头看看走过的路, …阅读全文
113. Flatten Binary Tree to Linked List5 分钟阅读依照题意,我们来撸一撸二叉树是如何形成链表的: 1 1 1 1 1 / \ / \ \ \ 2 5 ===> 2---> ===> 2 …阅读全文
114. Distinct Subsequences15 分钟阅读ven a string S and s string T, count the number of distinct subsequences of T in …阅读全文
115. Populating Next Right Pointers in Each Node5 分钟阅读拿到这道题,我还是和往常一样瞬间写出了递归算法。递归的思想太伟大了,你仅需解决一个节点,那么下面的算法都可以重复利用。 而且能够做到思路清晰,代码简单,几乎连注 …阅读全文
116. Populating Next Right Pointers in Each Node II5 分钟阅读这道题不是什么非常棒的解法, 今天时间有限, 只好简略修改 [10. Populating Next Right Pointers in Each …阅读全文
123. Binary Tree Maximum Path Sum5 分钟阅读这道题难点是个障眼法。 例子给出的二叉树一点代表性也没,我来给一个,说明题意: 1 / \ 2 3 / \ \ 4 5 6 我们列举一下,这里面有多少种可能的路 …阅读全文
127. Longest Consecutive Sequence10 分钟阅读这道题定为 hard 级别的原因并非是解决思路有多难想, 而是难在了效率的瓶颈. 要求在 O(n) 的复杂度情况下解决. 要知道, …阅读全文
128. Sum Root to Leaf Numbers5 分钟阅读这道题没啥好说的,深度优先遍历。非常直观,另,劝君不要尝试非递归算法,给自己找麻烦,记录层数相当繁琐。 我的解法超级简单, 只有寥寥几行代码,但思考却是一个循序 …阅读全文
132. Clone Graph5 分钟阅读这道题本身没什么难度。和 [100. Copy List with Random Pointer](../100. Copy List with Random …阅读全文
136. Single Number II10 分钟阅读这道题是真难. 我想了很久, 即使我一天都在外面转, 但脑子里一直在想. 可以再回顾一下 Single Number I, 那道题其实我想的很简单, 利用两个相 …阅读全文
141. Linked List Cycle II5 分钟阅读还记得这道题的[第一个版本](../07. Linked List Cycle)吗? 当时为了给 @Mooophy 解释,我还列了个式子。假设 slow …阅读全文
152. Find Minimum in Rotated Sorted Array5 分钟阅读真是怕什么来什么,又是一道二分查找。 为了增加乐趣,我这次采用了迭代器的方式,不过本质和数组形式差不多啦。(个人还是偏爱数组的形式,直观而简洁) 这题的关键在于 …阅读全文
435. Find All Duplicates in an Array5 分钟阅读这道题一定要审题,LeetCode 的特点是,题目言简意赅。那么就一定要从字字品味,获取思路。 首先,拿到这道题,如果没有这俩限制,是相当简单的: …阅读全文
619. Maximum Average Subarray I5 分钟阅读这道题虽然是求平均数,但可以视为求和。且已经规定了连续数组,那么就完全可以想像成一个长度为 k 的滑块。从头滑到尾,统计一下最大那个和就好了。 所以最常规的思路 …阅读全文
630. Maximum Binary Tree5 分钟阅读好久不来做题,为什么百忙之中来写这道题呢。。。 因为这被用来作为我司的面试题,而我却竟然还没做过。。。然后一看,果然比较基础,所以在这里写出来也无妨。 虽然被标 …阅读全文