leetcode
1. Two Sum
维护2个指针即可
2. Add Two Numbers
类似于大数相加
3. Longest Substring Without Repeating Characters
找最长的不出现重复字符的子串,维护2个指针滑动即可。
4. Median of Two Sorted Arrays
找2个有序数组的中位数
5. Longest Palindromic Substring
找最长的回文子串,枚举i,然后向两边扩展
6. ZigZag Conversion
模拟题
7. Reverse Integer
水题
8. String to Integer (atoi)
模拟题,字符串转成整数
9. Palindrome Number
确定一个数是否是回文数
10. Regular Expression Matching
判定正则表达式是否匹配,只有*和.的情况
11. Container With Most Water
好题 也是维护2个指针向中间移动,移动的那个肯定是短的
12. Integer to Roman
数字转罗马表达
13. Roman to Integer
罗马字符表达转数字
14. Longest Common Prefix
找一堆字符串的最长公共前缀,网上的都是暴利,可以用字典树,构造最后一个字符串的时候,一边构造,一边判断节点的大小是否等于字符串数
15. 3Sum
a+b+c=0 => a+b=-c 排序 如果数字比较小的话用x[n]=1表示有n这个数,
排序,2个循环遍历a,b,然后二分或者x[-(a+b)] 是否存在确定第三个数 复杂度n^2longn
循环第一个 然后 从剩下的两边往中间压,复杂度n^2
16. 3Sum Closest
a+b+c=x => a+b=x-c
最low的就是三个for循环,好一点的就是2个for循环,在二分第三个x-c最接近的,复杂度n^2logn
还是确定第一个,另外两个从两端往中间压 n^2复杂度
17. Letter Combinations of a Phone Number
水题
18. 4Sum
类似于3sum
19. Remove Nth Node From End of List
删除链表倒数第n个节点,快慢指针,可以先移动n步做个差。
20. Valid Parentheses
水题
21. Merge Two Sorted Lists
水题,合并2个有序列表
22. Generate Parentheses
n对括号有多少种表达的方式 递归一下
23. Merge k Sorted Lists
堆维护每个链表的头元素,或者两两归并,复杂度loknk
24. Swap Nodes in Pairs
两两交互链表的节点,也是基本操作
25. Reverse Nodes in k-Group
链表每k个反转
26. Remove Duplicates from Sorted Array
删除排序数组重复的元素
27. Remove Element
水题
28. Implement strStr()
kmp
29. Divide Two Integers
好题,模拟除法,不能用取模,乘法,除法
30. Substring with Concatenation of All Words
求主串包含所有子串的起点和终点,子串长度都是相等的
31. Next Permutation
求下一个排列,找一下规律看看
32. Longest Valid Parentheses
好题啊 dp和栈都能解
33. Search in Rotated Sorted Array
一个有序的数组 分成了2段 求一个数 可以二分
34. Search for a Range
找目标数字 起点和终点 二分
35. Search Insert Position
有序数组找目标数字 二分
36. Valid Sudoku
验证九宫格是否合法
37. Sudoku Solver
数独 求解,递归 或者 舞蹈链 dance link
38. Count and Say
暴利模拟
39. Combination Sum
题意是求和假期加起来等于s的所有组合,数字可以用无数次
网上很多都是暴力递归+剪枝,剪枝无非是
1排序,过滤掉比s大的 2 查询到 >= s的情况下直接返回 因为是排序后的,接下来搜索的结果肯定至少大于等于的,答案也不能重复,所以剪枝
复杂度应该是2^n
40. Combination Sum II
相对于上一题 数字只能使用一次
41. First Missing Positive
好题啊,求第一个不存在的正数,时间复杂度要求n,空间复杂度要求常数 用a[i]表示i+1
42. Trapping Rain Water
好题,最大储水量,对于每一个点,记录左边和右边的最大值,可以一边滑动一边求左右最大值,不需要申请n空间记录每一个
43. Multiply Strings
大数相乘
44. Wildcard Matching
判断正则表达式是否匹配,有?和*2种情况
45. Jump Game II
数组每个元素表示你最大能跳几步,求最少几步调到终点,开始在数组第一个位置,贪心即可
46. Permutations
求全排列,递归即可,非递归还没有研究
47. Permutations II
求全排列,有重复的数字,递归的时候特殊处理一下
48. Rotate Image
将一个n*n的数组顺时针旋转90度
49. Group Anagrams
将字符串分组,eat tea为一组,字符串哈希
50. Pow(x, n)
快速幂
51. N-Queens
n皇后问题
52. N-Queens II
n皇后问题
53. Maximum Subarray
求和最大的子序列
54. Spiral Matrix
n*m矩阵,螺旋状打印
55. Jump Game
数组每个元素表示你最大能跳几步,求是否能跳到终点,开始在数组第一个位置,贪心即可 参考45题
56. Merge Intervals
将区间合并 1,3 2,5 合并成1,5 排序处理即可 贪心
57. Insert Interval
给你一些不重叠的区间 现在加入合并一个区间
58. Length of Last Word
求最后一个单词的长度 水题
59. Spiral Matrix II
螺旋打印n*n数组
60. Permutation Sequence
求第k个全排列
61. Rotate List
链表断开在连接
62. Unique Paths
求从左上角到右下角的方案数 dp或者c(n+m,n)组合数
63. Unique Paths II
相对于62题多了障碍物,只能dp了
64. Minimum Path Sum
求左上角到右下角和最小的路径,dp
65. Valid Number
模拟题,验证一个字符串是不是数字
66. Plus One
数字+1
67. Add Binary
模拟2进制加法
68. Text Justification
字符串分成l个字符每行,填充空格 模拟题
69. Sqrt(x)
开根号,只取整数,网上有二分和牛顿迭代法
70. Climbing Stairs
斐波那契数列
71. Simplify Path
简化字符串 "/a/./b/../../c/"
, => "/c" 模拟
72. Edit Distance
编辑距离 dp n^2
73. Set Matrix Zeroes
一个矩阵 如果某个元素是0,将该行该列都置零
74. Search a 2D Matrix
在一个行都递增的矩阵里面查找一个数是否存在,下一行第一个比上一行最后一个大
那不就是全递增的吗,二分
75. Sort Colors
就0,1,2 3种数字排序
76. Minimum Window Substring
滑动窗口,在s中找到最短的包含t的字符串
77. Combinations
n,k 求包含k个数字的组合数 递归
78. Subsets
求不重复数集的所有子集 递归
79. Word Search
求字符串是否存在 搜索
80. Remove Duplicates from Sorted Array II
删除重复数字 最多只能出现2次
81. Search in Rotated Sorted Array II
一个有序的数组 分成了2段 求一个数 可以二分 同33 只不过 有重复数字
82. Remove Duplicates from Sorted List II
将有序链表中的重复数字全部删除
83. Remove Duplicates from Sorted List
和上一题相比 区别就是 一样的只留下一份
84. Largest Rectangle in Histogram
单调队列 dp
85. Maximal Rectangle
最大全1子矩阵 dp
86. Partition List
给一个链表,将小于值x的结点放到所有大于等于值x的结点的前面,不要改变结点之间的顺序
注意边界处理
87. Scramble String
区间dp 或者从小的往大的推
判断isScramble(s11,s21)&&isScramble(s12,s22)或者isScramble(s12,s21)&&isScramble(s11,s22)
88. Merge Sorted Array
合并2个有序数组
89. Gray Code
求格雷码,构造题
90. Subsets II
求不重复的子集,递归的时候判断一下如果和前面的一样 跳过即可
91. Decode Ways
dp 求字符串的解码数,比如12 可以是AB 也可以是L
92. Reverse Linked List II
部分链表反转
93. Restore IP Addresses
分隔ip地址,递归加上三个点,每段判断一下即可
94. Binary Tree Inorder Traversal
中序遍历二叉树,非递归方法
95. Unique Binary Search Trees II
求1-n组成的二叉索引树数量 每个点都可以作为根 递归 左边比根小1-i到1右边比根大i+1到n
96. Unique Binary Search Trees
这题和上题一样,但是是求数量 可以用卡特兰树
97. Interleaving String
s3是否是s1和s2交错合并成的 dp
98. Validate Binary Search Tree
验证是否是二叉树,中序遍历是有序的,可以利用94题的非递归方法
99. Recover Binary Search Tree
恢复二叉索引树,可以使用中序遍历的时候作比较
100. Same Tree
2棵树是否相等