《剑指Offer v2》数据结构与算法 题目解法关键知识点记录(二)

《剑指Offer v2》数据结构与算法

二算法类题目

2.1 查找

剑指 Offer 04. 二维数组中的查找【2利用行列递增特点,选取右上角元素或左下角元素,每次剔除一行或一列,缩小搜索范围,避免搜索区域重叠】
剑指 Offer 11. 旋转数组的最小数字【2二分查找】
剑指 Offer 53. I. 在排序数组中查找数字 I【二分查找改进】
剑指 Offer 53. II. 0~n. 1中缺失的数字【二分查找改进】
剑指 Offer 56. 1. 数组中数字出现的次数(二分查找)
剑指 Offer 39. 数组中出现次数超过一半的数字(解法二,哈希查找的改进)
剑指 Offer 40. 最小的K个数【5解法二,海量数据+红黑树multiset哈希表查增删O(nlogk)《编程珠玑》】

2.2 排序

剑指 Offer 39. 数组中出现次数超过一半的数字(解法一,快速排序改进;快速排序Partition双指针. 快慢指针)
剑指 Offer 40. 最小的K个数【5解法一:快速排序改进,同No.39】
剑指 Offer 45. 把数组排成最小的数【正整数转换成字符串qsort比较排序】
剑指 Offer 51. 数组中的逆序对【归并排序:循环迭代+递归】

2.3 回溯

递归
剑指 Offer 10. I. 斐波那契数列【2循环迭代倒序;递归O(2^n);O(logn)求得矩阵的n次方】同 [剑指 Offer 60. n个骰子的点数] 递归解法的时间复杂度为指数级O(6^n);同 [剑指 Offer 16. 数值的整数次方] ;
剑指 Offer 10. 2. 青蛙跳台阶问题【2循环迭代倒序;递归O(2^n)】同上题
剑指 Offer 10. 3. 2x1的小矩形无重叠的覆盖2x8的大矩形【2循环迭代倒序;递归O(2^n)】同上题
全排列
剑指 Offer 38. 字符串的排列【递归+循环+回溯】
剑指 Offer 17. 打印从1到最大的n位数【3解法二:字符串表达数字的全排列-递归+循环】
剑指 Offer 19. 正则表达式匹配【3模式匹配:连续多步多状态的全排列回溯问题;思维全面性:模式串下一个字符为‘*’时的非确定有限状态机】
剑指 Offer 60. n个骰子的点数【循环迭代倒序+两个数组;递归O(6^n)】同 [剑指 Offer 10. I. 斐波那契数列] 递归解法的时间复杂度为指数级O(2^n);数组存储中间结果处理思路类似 剑指 Offer 47
剑指 Offer 66. 构建乘积数组【循环迭代倒序+两个数组】
回溯
剑指 Offer 12. 矩阵中的路径【2递归+回溯】
剑指 Offer 13. 机器人的运动范围(DFS)
剑指 Offer 26. 树的子结构【3递归前序遍历+回溯】P12/148
剑指 Offer 34. 二叉树中和为某一值的路径【循环迭代/递归前序遍历+回溯】P12/185
剑指 Offer 55. 1. 二叉树的深度【统一循环迭代+回溯/递归后序遍历】P73/272

2.4 贪心

剑指 Offer 14- II. 剪绳子 II【2, 59 <= n <= 1000,int溢出-贪心+大数幂求余-数学证明-循环/快速幂求余】

2.5 动态规划

剑指 Offer 14. I. 剪绳子【2递归公式为一个for循环,O(n^2)】
剑指 Offer 42. 连续子数组的最大和【解法二】
53. 最大子数组和
剑指 Offer 47. 礼物的最大价值【5二维数组到一维数组优化空间复杂度】
剑指 Offer 48. 最长不含重复字符的子字符串【5字符哈希表存储上次出现过的位置】

2.6 位运算

剑指 Offer 15. 二进制中1的个数【2二进制与位运算的定义+左右移代替乘除2,位与运算判断位0/1+整数与整数减1位与运算实现把最右边的1变成0】
剑指 Offer 16. 数值的整数次方【3实现特定库函数的功能(特别是处理数值和字符串的函数),位运算代替取余和除2运算;O(logn)求得矩阵的n次方】同 [剑指 Offer 10. I. 斐波那契数列]
剑指 Offer 56 . I. 数组中数字出现的次数【数组元素位运算】
剑指 Offer 56 . II. 数组中数字出现的次数 II【数组元素位运算】
剑指 Offer 65. 不用加减乘除做加法【二进制的位运算,异或,与,左移】

2.7 其他算法

剑指 Offer 1-赋值运算符函数【2C++语法】
剑指 Offer 17. 打印从1到最大的n位数【3大数问题-字符串或数组表达大数+解法一:模拟数字加法】
剑指offer17. 思考题—实现任意两个整数的加法【3两个大整数的加法(包括负数)-字符串或数组表达大数+解法一:模拟数字加法】
处理与数字相关的计算技术,sprintf,atoi,pow
剑指 Offer 43. 1~n整数中1出现的次数【5正整数转换成字符串去掉最高位进行递归】
剑指 Offer 44. 数字序列中某一位的数字【5按数字位数进行循环】
剑指 Offer 45. 把数组排成最小的数【5正整数转换成字符串比较排序】
剑指 Offer 46. 把数字翻译成字符串【5按位倒序循环迭代替代递归】
剑指 Offer 49. 丑数【5类似滑窗的思路,不断更新三个滑窗起始指针,用起始指针计算当前丑数】
剑指 Offer 64. 求1+2+…+n【6C++语法:构造函数,静态成员变量,虚函数,函数指针,模板类实例化】

三一类常见的面试题:实现特定库函数的功能(特别是处理数值和字符串的函数)

剑指 Offer 16. 数值的整数次方【3pow,思维全面性:一些错误情况】
剑指 Offer 67. 把字符串转换成整数【7atoi,思维全面性:一些错误情况】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值