《剑指offer》Java版目录

我会将其中我认为最高频的加上 * 号,但是仍然建议所有题目都能熟练的写出。

03 二维数组中的查找

04.替换空格

* 05.从尾到头打印链表 (非常非常常见的栈入门题[递归也可以])

06. 前序+中序重建二叉树 (考察对树的基础知识的掌握程度)

07. 用两个栈实现队列

08.旋转数组的最小数字 (考察的是非正常情况的查找,查找必然不离二分/树(尤其是短String的查找,离不开字典树))

** 09. 斐波那契数列 必会 (这题一定要学会为什么常见的递归会很慢,如何使用内容优化递归速度,以及如何使用空间为O(1)的递推)

09(2). 矩形覆盖(需要仔细观察规律,并找到其与斐波那契的关联)

09(2) 变态跳台阶(跳台阶是斐波那契的一个简单变阶,此题加大/降低了难度,需要你从斐波那契的惯性中跳出来)

* 10.二进制中1的个数 你需要找到二进制中1与10进制中的对应

11. 数值的整数次方 从O(n)到O(lg n),记得找规律。

* 12. 调整数组顺序使奇数位于偶数前面 可以使用空间换时间,也可以使用比较器.

15. 链表中倒数第k个结点 快慢指针的奇妙用法

16. 反转链表 注意空间。

17. 合并两个排序的链表 归并。

** 18. 树的子结构 递归的常见写法,一定要将递归与树练会。

* 19. 二叉树的镜像 递归的常见写法,一定要将递归与树练会。

20. 顺时针打印矩阵 可以找规律,也可以用深搜.

* 21. 包含min函数的栈

** 22. 栈的压入、弹出序列 既然能按照规律手工计算,那么就能被代码模拟出来。

***** 23. 从上往下打印二叉树 层级遍历(必须学会,否则树的知识就是一知半解)

24. 二叉搜索树的后序遍历序列

25. 二叉树中和为某一值的路径 深搜

26. 复杂链表的复制 一个很巧妙的解法,没学过是很难想出来的。

27. 二叉搜索树与双向链表 二叉搜索树的有序性质

28. 字符串的排序

** 29.数组中出现次数超过一半的数字

*** 30. 最小的K个数 经典的排序改进题

31. 连续子数组的最大和 动归存最大值

32. 从1到n的整数中1出现的次数 难度稍大

33. 把数组排成最小的数 一千零一种排序

34. 丑数

35.第一个只出现一次的字符

36.数组中的逆序对

37.两个链表的第一个公共结点

38.数字在排序数组中出现的次数

39.二叉树的深度

40.平衡二叉树

40.数组中只出现一次的数字

42. 和为S的连续正数序列

43.和为S的两个数字

44. 左旋转字符串

45. 翻转单词顺序列

46.扑克牌顺子

46.求1+2+3+…+n

47. 不用加减乘除做加法

47. 圆圈中最后剩下的数

48.把字符串转换成整数

49.数组中重复的数字

50.构建乘积数组

51.正则表达式匹配

52.表示数值的字符串

53.字符流中第一个不重复的字符

54. 链表中环的入口结点

55. 删除链表中重复的结点

56. 二叉树的下一个结点

57. 对称的二叉树

58. 按之字形顺序打印二叉树

59. 把二叉树打印成多行

60.序列化二叉树

你可能感兴趣的:(《剑指offer》Java版目录)