剑指offer最新版_剑指offer第二版速查表

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:59   3096   0

5.替换空格:python直接替换

6.从尾到头打印链表: 借助栈或直接利用系统调用栈 // 创建链表(设置next节点时就会创建下一个节点), 打印链表(最后打印nil)

xxx8.二叉树的下一个节点:根据中序遍历特点,按有无右子树分情况讨论

xxx9.两个栈实现队列:栈的特点

10.斐波那契数列:递归思想,循环方法自下而上计算O(n)

xxx11.旋转数组最小数字:二分查找,考虑left,right,mid三个下标值相同情况。O(logn)

查找和排序之Counting Sort,[快速排序TODO],[堆排序TODO]

13.机器人的运动范围:回溯法,递归解决

15.二进制中1的个数:位运算,将一个整数减去1再和原来整数做位与运算,相当于把整数二进制最右边的1变为0

16.数值的整数次方:递归 O(logn)

17.打印从1到最大的n位数:dfs,大数问题

21.调整数组顺序使奇数位于偶数前面:双指针 O(n)

26.树的子结构:两个递归,一个遍历A树节点,找到与B树根节点值相同的节点;一个遍历以A树节点为根结点的子树和B树,判断其是否包括B

27.二叉树的镜像:递归考察先序遍历;非递归考察层序遍历

28.对称的二叉树:递归

29.顺时针打印矩阵:设置up,down,left,right四个位置变量,顺时针遍历

30.包含min函数的栈:维护一个栈,栈顶元素永远是最小值

31.栈的压入弹出序列:栈的性质

32:从上到下打印二叉树:层序遍历

33.二叉搜索树的后续遍历序列:后续遍历特点,递归解决

34.二叉树中和为某一值的路径:dfs记录每一条路径和

35.复杂链表的复制:指针操作,三步走战略:复制原始链表节点,设置节点random指针,链表拆分

36.二叉搜索树与双向链表:中序遍历的考察

37.序列化二叉树:先序遍历及利用序列构造树

38.字符串的排列:全排列问题,dfs解决

39.数组中出现次数超过一半的数字:partition函数可以实现O(n)时间找到第k大的数O(n);利用数组性质,两两相消得到最后的数字 O(n)

40.最小的k个数:partition函数找到第k个数位置,返回该数左边k个数 O(n);最大堆,维护大小为k的最大堆 O(nlogk)

41.数据流中的中位数:最小堆与最小堆,维护一个最大堆,一个最小堆,最大堆中所有元素小于最小堆中所有元素,两个堆元素保持相同,堆顶元素即为中位数 O(logn)

42.连续子数组最大和:动态规划 O(n)

44.把数组排成最小的数:partition函数排序,设置比较大小规则 O(nlogn)

46.数字翻译成字符串:动态规划 O(n)

47.礼物的最大价值:动态规划

48.最长不含重复子串的子字符串:动态规划 O(n)

49.丑数:动态规划

50.第一个只出现一次的字符:哈希表 O(n)

51.数组中的逆序对:归并排序的应用 O(nlogn)O(n)

52.两个链表的第一个公共节点:遍历至尾节点跳到另一个链表头结点继续遍历 O(m+n)(百度)

53.数字在排序数组中出现的次数:二分查找 O(logn)

54.二叉搜索树的第k大节点:二叉搜索树的中序遍历

55.二叉树的深度:后序遍历

56.数组中只出现一次的两个数字:位运算的考察

57.和为s的数字:双指针 O(n)

58.左旋转字符串:多次翻转

59.滑动窗口最大值:维护最大值队列 O(n)

61.扑克牌中的顺子:比较0的个数与空缺个数

62.圆圈中最后剩下的数字:环形链表 O(mn);约瑟夫环 O(n)

63.股票的最大利润:动态规划 O(n)

67.字符串转化为整数:思维全面性

68.树中两个节点最低公共祖先:递归;非递归 (微软)

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP