未复习:
27. 字符串排列
29. 最小的k个数
35. 数组中的逆序对
找规律性质:
31. 整数中1出现的次数
41. 和为S的整数(滑动时间窗口)
43. 左旋转字符串(YX=(XT YT) T)
46. 孩子们的游戏
47. 1+2+3+...+n(短路求值)
48. 不用加减乘除做加法
51. 构建乘积数组(矩阵上下三角)
52. 正则表达式匹配
64. 滑动窗口的最大值
数组:
1. 二维数组中的查找
6. 旋转最小数字
13. 调整数组顺序使奇数在偶数前面
19. 顺时针打印矩阵
28. 数组中出现次数超过一半的数字
29. 最小的k个数
32. 把数组排成最小的数
33. 丑数
35. 数组中的逆序对
37. 数组在排序数组中出现的次数
41. 和为S的正整数序列(回溯)
42. 和为S的两个数
45. 扑克牌顺子
51. 构建乘积数组
52. 正则表达式匹配
字符串:
2. 替换空格
27. 字符串排列
34. 第一个只出现一次的字符
43. 左旋转字符串
44. 翻转单词序列
49. 字符串转换成整数
53. 表示数值的字符串
54. 字符流中第一个只出现一次的字符
链表:
3. 倒序打印链表
14. 倒数第k个节点
15. 反转链表
16. 合并两个有序链表
25. 复制复杂链表
36. 两个链表的第一个公共节点
46. 孩子们的游戏
55. 链表的环的入口
56. 删除链表中重复的节点
树(递归):
4. 重建二叉树(前序+中序)
17. 树的子结构
18. 二叉树的镜像
22. 从上到下打印二叉树(层序遍历)
23. 二叉搜索树的后序遍历
24. 二叉树中和为某一值的路径
26. 二叉搜索树与双向链表
38. 二叉树的深度
39. 平衡二叉树
57. 二叉树的下一个中序节点
58. 对称二叉树
61. 序列化二叉树
62. 二叉搜索树的第k个节点
63. 数据流的中位数
栈和队列(辅助栈):
5. 用两个栈实现一个队列
20. 包含min函数的栈
21. 栈的压入和弹出序列
59. 按之字形打印二叉树
60. 二叉树按层打印
64. 滑动窗口的最大值
65. 矩阵中的路径
二进制位运算:
11. 二进制中1的个数
12. 数值的整数次方(快速幂)
40. 数组中只出现一次的数
48. 不用加减乘除做加法
排序:
29. 最小的k个数
35. 数组中的逆序对
递归:
7. 斐波那契
8. 跳台阶
9. 变态跳台阶
52. 正则表达式匹配
60. 把二叉树打印成多层
65. 矩阵中的路径
66. 机器人的运动路径
HashMap / 位图:
40. 数组中只出现一次的数
42. 和为S的两个数
45. 扑克牌顺子
50. 数组中重复的数字
54. 字符流中第一个只出现一次的字符
堆:
63. 数据流的中位数
※回溯:
65. 矩阵中的路径
66. 机器人的运动范围
动态规划:
7. 斐波那契
8. 跳台阶
10. 矩形覆盖
30. 连续子数组的最大和
52. 正则表达式匹配