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

文章详细列举了《剑指Offer》中涉及的数据结构与算法题目,涵盖Array、LinkedList、HashTable、String、Stack&Queue、BinaryTree及Heap等多个方面,包括各种经典问题的解决方案,如数组中重复数字的查找、链表操作、二叉树遍历等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一数据结构类题目

1.1 Vector(Array)

剑指 Offer 03. 1. 数组中重复的数字【2修改输入的数组,i的数字m和m的数字进行两次比较,TO(n)+SO(1)】
剑指 Offer 03. 2. 不修改数组找出重复的数字【2二分查找改进,TO(nlogn)+SO(1)】
剑指 Offer 04. 二维数组中的查找【2改变查找的方向-右上角或左下角-每一次都在数组的查找范围中删除一行或者一列,逐步缩小查找范围TO(n+m)】
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面【双指针首尾扫描】【可扩展性:用一个单独的函数来判断是否符合标准,用函数指针调用函数】
剑指 Offer 29. 顺时针打印矩阵【模拟行为】
剑指 Offer 53. I. 在排序数组中查找数字 I【二分查找改进】
剑指 Offer 53. II. 0~n. 1中缺失的数字【二分查找改进】
剑指 Offer 57. 和为s的两个数字【双指针首尾扫描,类似滑动窗口】
209.长度最小的子数组【滑动窗口】
剑指 Offer 57. II. 和为s的连续正数序列【滑动窗口】
剑指 Offer 42. 连续子数组的最大和【解法一,滑动窗口】
剑指 Offer 49. 丑数【5类似滑窗的思路,不断更新三个滑窗起始指针】
剑指 Offer 61. 扑克牌中的顺子【双指针】
剑指 Offer 63. 股票的最大利润【双指针改进,类似滑动窗口,变量min保存数组前i-1个数字的最小值,与遍历的第i个当前价位卖出的数字得到最大利润】

1.2 LinkedList

剑指 Offer 06. 从尾到头打印链表【2循环+栈】
剑指 Offer 18. 删除链表的节点【3LeetCode题目,与203完全相同,虚拟头结点】
203. 移除链表元素【Carl虚拟头结点】
剑指 Offer 18. 删除链表的节点【3V2题目一,等效删除O(1),换成下一个节点内容,删除下一个节点;思维全面性,要删除的节点为尾结点,唯一节点,不在链表中】
剑指 Offer 18. 删除链表的节点【3V2题目二,思维全面性,要删除的重复节点为头结点,删除之后的连接】
剑指 Offer 22. 链表中倒数第k个结点【3虚拟头结点+先后双指针】
剑指 Offer 23. 链表中环的入口结点【3快慢双指针+先后双指针】
142. 环形链表 II【Carl快慢双指针+数学公式推导】
剑指 Offer 24. 反转链表【3双指针】
剑指 Offer 25. 合并两个排序的链表【3循环+递归】
剑指 Offer 52. 两个链表的第一个公共节点【单链表】
剑指 Offer 62. 圆圈中最后剩下的数字(约瑟夫环)【环形链表(单链表) +数学公式推导】
剑指 Offer 36. 二叉树搜索与双向链表【双链表】
剑指 Offer 35. 复杂链表的复制【复杂链表+确定Sibling指针的节点O(3*n)】

1.3 Hash Table

剑指 Offer 40. 最小的K个数【5解法二,海量数据+红黑树multiset哈希表查增删O(nlogk)】
剑指 Offer 50. 第一个只出现一次的字符【题目一,用要查找的字符(串)构建哈希表,查找O(1)】
剑指 Offer 50. 第一个只出现一次的字符【题目二,用字符第一次出现的位置作为哈希值】

1.4 String

剑指 Offer 05. 替换空格【2尾尾双指针+内存覆盖】
剑指 Offer 58. I. 翻转单词顺序【6先后双指针:删除多余空格+翻转单词】
剑指 Offer 58. 2. 左旋转字符串(矩阵翻转)【6首尾双指针:翻转字符串】
剑指 Offer 19. 正则表达式匹配【3模式匹配:思维全面性:模式串下一个字符为‘*’时的非确定有限状态机的逻辑判断】
剑指 Offer 20. 表示数值(包括整数和小数)的字符串【3模式匹配:按照模式串顺序进行整数分组扫描,进行逻辑判断;思维全面性:字符逆序出现的情况】
剑指 Offer 67. 把字符串转换成整数【7模式匹配:atoi,思维全面性:一些错误情况】

1.5 Stack & Queue

剑指 Offer 09.1. 用两个栈实现队列
剑指 Offer 09.2. 用两个队列实现栈
剑指 Offer 30. 包含O(1)min函数的栈【最小值辅助栈】
剑指 Offer 31. 栈的压入、弹出序列【while+if描述复杂的压栈弹出操作】
剑指 Offer 59. 1. 滑动窗口的最大值【双端队列deque】
剑指 Offer 59. 2. 队列的最大值【双端队列deque】

1.6 Binary Tree

二叉树的遍历
剑指 Offer 27. 二叉树的镜像【二叉树的统一循环迭代前序+循环迭代前序和层序遍历】
剑指 Offer 28. 对称的二叉树【二叉树的循环迭代前序+层序双向遍历+nullptr】
剑指 Offer 32. 1 . 从上往下打印二叉树【循环迭代简单层序遍历】
剑指 Offer 32. 2 . 从上往下打印二叉树 2【循环迭代简单层序遍历+两个变量计算器】
剑指 Offer 32. 3 . 从上往下打印二叉树 3【循环迭代层序遍历+两个栈,反向保存】
剑指 Offer 36. 二叉搜索树与双向链表【二叉搜索树+统一循环迭代中序遍历+指针连接】
剑指 Offer 52. 两个链表的第一个公共节点
剑指 Offer 54. 二叉搜索树的第k大节点【统一循环迭代中序遍历】
剑指 Offer 26. 树的子结构【3递归前序遍历+判断B/递归回溯+判断B】P12/148
剑指 Offer 34. 二叉树中和为某一值的路径【4循环迭代/递归前序(路径的定义)遍历+回溯】P12/185
剑指 Offer 55. 1. 二叉树的深度【6统一循环迭代+回溯/递归后序遍历+层序遍历】CarlP73/272
剑指 Offer 55. 2. 平衡二叉树【递归后序遍历;6剑指 Offer 55. 1. 二叉树的深度+递归前序遍历】P73/272/274
剑指 Offer 68. I. 二叉搜索树的最近公共祖先【二叉搜索树】
剑指 Offer 68 . II. 二叉树的最近公共祖先【指向父节点指针;循环迭代前序遍历获得路径链表,求两个链表的最后一个公共节点】
二叉树的遍历序列-遍历特点的理解
剑指 Offer 07. 重建二叉树【2根据二叉树的前序和中序遍历序列重建二叉树+递归左右子树序列构建二叉树】
剑指 Offer 33. 二叉搜索树的后序遍历序列【根据二叉搜索树的后序遍历特点分递归左右检查】
剑指 Offer 37. 序列化二叉树【根据二叉树的前序遍历序列字符串构建二叉树】

1.7 Heap

剑指 Offer 40. 最小的K个数【5解法三:二叉树最大堆】
剑指 Offer 41. 数据流中的中位数【二叉树最大堆最小堆】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值