随笔分类 -  剑指offer题解

题目来源为LeetCode上的剑指offer系列。
摘要:题解: 直接排序,找前面最小的k个 建立大顶堆,大顶堆,最大的数在最上面嘛。。。 结果:直接排序比PriorityQueue实现的大顶堆速度更快。。。 图中8ms的就是直接排序的。 完整代码: 1 /** 2 * @author: wooch 3 * @create: 2020/02/26 4 */ 阅读全文
posted @ 2020-02-27 00:20 子春十一 阅读(161) 评论(0) 推荐(0)
摘要:给两个数组,分别是前序和中序的遍历结果。(数组中没有重复的数字) 首先知道二叉树的便利分别是: 先序遍历:根左右; 中序遍历:左根右; 后续遍历:左右根; 即根在哪一个位置,就是哪一种遍历方式,其中左右的顺序是不变的。 一个经验之谈:涉及到二叉树问题的时候,大部分二叉树问题都可以通过递归方式解决。 阅读全文
posted @ 2020-02-22 00:20 子春十一 阅读(199) 评论(0) 推荐(0)
摘要:链表不能像数组一样直接进行随机读取,只能从头结点开始打印链表。 题解:要求从尾到头打印链表,那么首先就是要找到链表的整体长度,通过长度创建数组,然后将链表的第一个节点的值放入数组的最后一个位置,最后的数组正序的值就是链表倒叙的值。 分析:整个题目中会对链表进行两次遍历,需要的额外空间就是链表的长度, 阅读全文
posted @ 2020-02-21 12:13 子春十一 阅读(150) 评论(0) 推荐(0)
摘要:在Java中String类是被final关键字修饰的类,因此String字符串是不可以被修改的,要修改字符串,可以通过StringBuilder和StringBuffer构造一个新的字符串。 StringBuilder和StringBuffer这两个类也是被也是被final关键字修饰的,并且都是继承 阅读全文
posted @ 2020-02-21 12:00 子春十一 阅读(176) 评论(0) 推荐(0)
摘要:二维数组中的查找 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 题解:做矩阵左下角或是右上角开始查询,当target存在的时候,当nums[i][j]<targe 阅读全文
posted @ 2020-02-14 17:45 子春十一 阅读(155) 评论(0) 推荐(0)
摘要:找出数组中重复的数字 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 题解:题目中的数字范围为0~1,因此有一个最简单的思路:以数组nums中的长度创建数组,n 阅读全文
posted @ 2020-02-14 17:10 子春十一 阅读(638) 评论(0) 推荐(0)