
剑指offer
ncc1995
这个作者很懒,什么都没留下…
展开
-
【剑指Offer】之链表反向打印和重建二叉树
链表反向打印 题目描述: 从尾到头反过来打印出每个结点的值。 三种方法: 递归 利用头插法的性质 栈 第二个和第三个都没有问题,问题出现在了递归上。 根据参考的代码,递归这样写: public static ArrayList<Integer> printListReversed(ListNode listnode) { ArrayList<Integer...原创 2019-03-09 16:36:41 · 206 阅读 · 0 评论 -
【剑指Offer】求旋转数组的最小值
首先介绍下旋转数组: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 例如数组 {3, 4, 5, 1, 2} 为 {1, 2, 3, 4, 5} 的一个旋转。 使用二分查找的思想: 如果a[mid]小于a[high],说明最小值已经移到了mid位置或者mid往左的位置,所以此时最小值在low——mid之间; 反之,说明比较大的数值那一部分还占据着mid以及mi...原创 2019-03-14 22:00:31 · 256 阅读 · 0 评论 -
【剑指Offer】矩阵中的路径问题
对于有保存价值的题目,都会把代码贴上来。防止电脑里的丢失。 package jianzhiOffer; /* * 注意:递归结束的条件一定要写 * * 自己的思路:利用图的思想,不断转换当前结点,对当前结点进行判断,直到最后。 */ public class StringPathInMatrix { private final int[][] next = new int[]...原创 2019-03-15 18:05:16 · 223 阅读 · 0 评论 -
【剑指Offer】二叉树的下一个结点
上图所示二叉树,找下一个结点,分四种情况考虑: 结点2——下一个结点为3 结点4——下一个结点为5 结点5——下一个结点为6 结点7——下一个结点为8 而下面所说的第二种情况类似于删除节点中的找后继节点,先判断是否存在右结点,再判断右结点是否存在左结点,如果存在左结点,就一直找到最下面的一个左结点,否则下一个结点就为右结点。 第一种情况是找父节点。 结点2和4都是在找父节点或者祖...原创 2019-03-11 17:38:18 · 212 阅读 · 0 评论 -
【剑指Offer】删除链表中重复的结点
自己的代码写的有点乱。 记录一下书中给的思路吧: list:1 1 2 3 4 4 初始化preNode=null;curNode=head; 需要判断该节点是否为重复结点,此处可设置一个标志位; 接下来需要思考的是怎样判断是否为重复结点,重复结点如何操作,非重复结点又该如何操作; (1)因为该链表是顺序链表,所以当当前结点的值等于下一个结点的值的时候就是重复结点;(2)如果是重复结点...原创 2019-03-28 21:03:30 · 157 阅读 · 0 评论