
剑指 Offer
文章平均质量分 77
家师曹先生
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指 Offer 08. 二叉树的下一个结点
题目要求是获取中序遍历序列中,给定节点的下一个顺序结点。那么就需要先获取到中序遍历序列。而中序遍历需要用到根节点,所以需要先根据给定节点找到根节点(根据给定节点的next指针向父节点迭代可以找到根节点),然后再根据根节点获取中序遍历序列。拿到中序序列后,只需要遍历中序序列,将中序序列的每一个节点和给定节点进行比较来找到给定节点在中序序列的下标位置 i,中序遍历序列中,给定节点的下一个顺序结点就是 i + 1 下标位置的节点咯。原创 2022-10-03 23:07:37 · 478 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
栈的特点:先进后出,出入元素都在栈的同一端 ( 栈顶 )。队列的特点:先进先出,出入元素是在不同的两端 ( 队尾进、队头出 )。一个栈无法实现队列,但两个栈可以实现。可以让其中一个栈作为队列的入口,负责插入元素。另一个栈作为队列的出口,负责移除元素。原创 2022-10-03 21:19:03 · 477 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
通过递归的方式,把问题分解成更小的问题。也就是:将把某个节点的左子树、右子树看成一完整的棵树,那么对子树的访问或操作 就是对 原树的访问或操作的子问题,通过递归调用不断进入子树。原创 2022-10-03 18:21:24 · 413 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
打破数组从左往右添加元素的固定思维,我们可以从右往左添加元素,达到一个反序的效果。原创 2022-09-30 15:03:58 · 448 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
在单线程情况下,使用StringBuilder的效率 比 使用String的replaceAll() 方法 ( replaceAll()的底层用了StringBuffer ) 的效率高。因为单线程情况下,StringBuilder的效率比StringBuffer的效率高。原创 2022-09-29 23:26:42 · 246 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
由于二维数组左下角的元素,比它上边的元素大,比它右边的元素小。根据左下角元素的这一规律,可以将二位数组划分成一个大区域和一个个小区域。每次将目标元素与左下角元素比较,我们就可以直到目标元素应该在哪一个区域中,从而缩小比较范围,较少比较次数。 ( 分治思维 )原创 2022-09-29 21:14:16 · 240 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
针对这道题,给出三种解题方式:① 元素位置重排序、② 有序数组相邻元素比较、③ HashSet不重复元素。原创 2022-09-29 17:33:07 · 230 阅读 · 0 评论 -
剑指 Offer 01.02. 判定是否互为字符重排
将字符串转成字符数组,通过数组工具类 Arrays 的 sort() 对字符数组进行升序排序,最后通过 Arrays 的 equals() 对两个数组进行比较即可。这种做法主要考察我们对 String 和 Arrays 的 API 的掌握。原创 2022-09-29 00:09:26 · 361 阅读 · 0 评论