剑指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. 二叉树的最近公共祖先【递归】

最后更新于