Links

剑指Offer

(4/5)
以下是本节中的文章:
03. 数组中重复的数字【排序/哈希/比较交换】
04. 二维数组中的查找【线性查找】
05. 替换空格【字符串】
06. 从尾到头打印链表【栈/递归】
07. 重建二叉树【递归】
09. 用两个栈实现队列【辅助栈】
10-I. 斐波那契数列【DP】
10-II. 青蛙跳台阶问题【DP】
11. 旋转数组的最小数字【二分查找】
12. 矩阵中的路径【DFS】
13. 机器人的运动范围【DFS/BFS】
14-I. 剪绳子【DP/贪心】
14-II. 剪绳子 II【贪心】
15. 二进制中1的个数【位运算】
16. 数值的整数次方【分治】
*17. 打印从1到最大的n位数
18. 删除链表的节点
*19. 正则表达式匹配
20. 表示数值的字符串
21. 调整数组顺序使奇数位于偶数前面【双指针】
22. 链表中倒数第k个节点【快慢指针】
24. 反转链表【递归/双指针】
25. 合并两个排序的链表【递归】
26. 树的子结构【递归】
27. 二叉树的镜像【递归/辅助栈】
28. 对称的二叉树【递归】
29. 顺时针打印矩阵【模拟】
30. 包含min函数的栈【辅助栈】
31. 栈的压入、弹出序列【辅助栈】
32 - I. 从上到下打印二叉树【BFS】
32 - II. 从上到下打印二叉树 II【BFS】
32 - III. 从上到下打印二叉树 III【BFS 双端队列】
33. 二叉搜索树的后序遍历序列【分治 递归】
34. 二叉树中和为某一值的路径【递归 回溯】
*35. 复杂链表的复制【哈希表】
36. 二叉搜索树与双向链表【DFS】
37. 序列化二叉树【BFS】
38. 字符串的排列【DFS】
*39. 数组中出现次数超过一半的数字【哈希/摩尔投票】
40. 最小的k个数【堆】
41. 数据流中的中位数【堆】
42. 连续子数组的最大和【DP】
43. 1~n 整数中 1 出现的次数【找规律】
44. 数字序列中某一位的数字【找规律】
45. 把数组排成最小的数【排序】
46. 把数字翻译成字符串【DP】
47. 礼物的最大价值【DP】
48. 最长不含重复字符的子字符串【滑动窗口】
49. 丑数【DP】
50. 第一个只出现一次的字符【哈希表】
*51. 数组中的逆序对【归并排序】
52. 两个链表的第一个公共节点【双指针】
53 - I. 在排序数组中查找数字 I【二分查找】
53 - II. 0~n-1中缺失的数字【二分查找/位运算】
54. 二叉搜索树的第k大节点【中序遍历】
55 - I. 二叉树的深度【DFS/BFS】
55 - II. 平衡二叉树【DFS】
56 - I. 数组中数字出现的次数【位运算】
56 - II. 数组中数字出现的次数 II【位运算】
57. 和为s的两个数字【双指针/哈希表】
57 - II. 和为s的连续正数序列【双指针】
58 - I. 翻转单词顺序【双指针】
58 - II. 左旋转字符串【字符串】
*59 - I. 滑动窗口的最大值【滑动窗口】
59 - II. 队列的最大值【队列】
*60. n个骰子的点数【DP】
61. 扑克牌中的顺子【Set/排序】
62. 圆圈中最后剩下的数字【约瑟夫环】
63. 股票的最大利润【DP】
64. 求1+2+…+n【短路】
65. 不用加减乘除做加法【位运算】
*66. 构建乘积数组【DP】
67. 把字符串转换成整数
68 - I. 二叉搜索树的最近公共祖先【迭代/递归】
68 - II. 二叉树的最近公共祖先【递归】