1-10¶
1. 两数之和¶
1 | class Solution { |
2.两数相加¶
1 | class Solution { |
3.无重复字符的最长子串¶
1 | /** |
4.寻找两个正序数组的中位数¶
1 | class Solution { |
5.最长回文子串¶
1 | /** |
6.Z字变换¶
1 | /** |
7.整数反转¶
1 | /** |
8.字符串转换整数 (atoi)¶
1 | /** |
9.回文数¶
1 | class Solution { |
10.正则表达式匹配¶

1 | /** |
11-20¶
11. 盛最多水的容器¶
本题思路:
首先遇到这种问题,优先考虑双指针算法,双指针需要寻找其规律性简化计算逻辑。因此难点转化为如何移动指针,基于以下两点共识:
- 相同情况下两边的距离越远越好,因此其实从两个端点开始。
- 面积受限于较短边。因此当两边中一边较短时移动较短边。
可以使用反证法证明答案的正确性:本题存在最优解的两个边。假设右边已经到达右侧最优解所在边,左侧还需要移动时,左侧的边必然低于右侧的边。因为当左侧最优解还没到时,此时如果左侧边高于左侧最优解,那么就有更大的面积,存在矛盾,可证。
1 | class Solution { |
15. 三数之和¶
本题优化在用一个双指针优化了两层循环,将其从降低到
,因此整体时间复杂度为
。
基于单调性,可以使用试探法,先判断下一个是否满足,满足直接去下一个数,不然用上一个数检验。
针对重复情况,使用形如j > i + 1 && nums[j] == nums[j - 1]这样的方式,避免相同位上相同的元素。
1 | class Solution { |
18. 四数之和¶
另外需要注意虽然排序完成后整体为单调递增,但是target为负数时,不能通过nums[i]>target进行常数级优化。
1 | class Solution { |
20. 有效的括号¶
1 | class Solution { |
21-30¶
21.合并两个有序链表¶
1 | /** |
22.括号生成¶
1 | /** |
23.合并K个升序链表¶
1 | class Solution { |
25. K 个一组翻转链表¶
1 | class Solution { |
28. 实现 strStr()¶
1 | class Solution { |
31-40¶
31. 下一个排列¶
1 | // 本题的解题思路在于利用两次遍历,找到转折点。 |
1 | // 本质上还是两个升序的数组,因此先二分找到分界点,然后在二分找到target位置 |
1 | // 本题需要注意二分条件的选择,起点>=,终点<=以及查询到之后left需要保存下来,以免之后二分修改。 |
41-50¶
42. 接雨水¶
1 | // 本题使用了单调栈实现,last存上一个点的高度,需要注意的是这里stk存的是索引,而不是高度 |
43. 字符串相乘¶
1 | class Solution { |
46. 全排列¶
1 | // 本题单纯的dfs没办法生成path,因为索引i可能不是path存放的索引,所以需要u来标记path中的存放位置 |
51-60¶
51.N皇后¶

由图可知,当y=x+b是存在截距为负数的情况,而数组下表不存在负数。因此+n,保证其为正数。
1 | class Solution { |
52.N皇后II¶
1 | class Solution { |
53.最大子数组和¶
1 | // 这里采用了动态规划的方式。f(i)表示以nums[i]为最后一个元素的数组和 |
1 | // 分治的思想实现,将整个数组拆成两个子数组,分别计算其中的前缀和 |
54. 螺旋矩阵¶
1 | class Solution { |
56. 合并区间¶
1 | class Solution { |
61-70¶
61. 旋转链表¶
本题的移动位置k会给的很大,需要进行取余操作。
本题的解题步骤分为四步:
- 将n-k-1处的节点的next指向NULL
- 将整个链表的尾部指向头节点
- 返回原本n-k处的节点
1 | class Solution { |
69. Sqrt(x)¶
1 | class Solution { |
71-80¶
1 | class Solution { |
1 | class Solution { |
81-90¶
82. 删除排序链表中的重复元素 II¶
1 | class Solution { |
83. 删除排序链表中的重复元素¶
1 | class Solution { |
88. 合并两个有序数组¶
1 | // 本题的解题难点在于怎么移动元素,因为采用的vector,移动需要使用额外空间 |
90. 子集 II¶
1 | class Solution { |
91-100¶
92. 反转链表 II¶
1 | class Solution { |