剑指offer
爱读书的小寿星
真正的高贵是优于过去的自己
展开
-
二维数组查找19.9.8
首先是两种思路:① 假设数组是M*N的,每一行用二分搜索,这样最坏的时间复杂度就是M*Log2N,但这种方法只用到了一个条件:从左到右有序。并不是题目希望我们的方法② 二分思想,从左下开始遍历,或者从右上开始遍历,这样最坏的时间复杂度就是O(n),下面的代码按照左下开始:(注意:提交时一直提示段错误,思考了很久才发现,对于下面第一种代码,要先判断数组是否存在,)class So...原创 2019-09-09 15:38:27 · 154 阅读 · 0 评论 -
调整顺组顺序使奇数位于偶数前面19.9.21
1题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解第一种思路:先把奇偶分拣出来,再整合回去,还要保证奇奇之间顺序一致,偶偶之间顺序一致,这样队列结构符合,但这种的缺陷是空间复杂度高java中:LinkedListadd()添加元素poll()...原创 2019-09-24 20:45:16 · 206 阅读 · 0 评论 -
合并两个排序的链表19.21
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题过程:遇到链表题,老是会有抠边界的问题,临场思路要是不清晰就会出问题,就这个问题,我做了以下的总结:第1步:审清题目:合并后是有序的,而且两个链表本身也是有序的第2步:在边界上抠不清楚,代码冗余度很高,分块处理: 1)把特殊情况拎出来先处理,像个数...原创 2019-09-21 16:19:59 · 170 阅读 · 0 评论 -
链表反转问题重新总结 20.1.27
题目:输入一个链表,反转链表后,反向打印链表第一种 非递归——借用栈来实现逆序/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val = val;* ...原创 2019-09-21 16:07:38 · 196 阅读 · 0 评论 -
剑指offer-leetcode刷题总结(一)19.9.8-9.21
目录剑指offer普通题:2019/9/8: 二维数组查找2019/9/8: 替换空格2019/9/9: smallRotateNum2019/9/9: 斐波那契系列2019/9/9: twoStack2019/9/11: 二进制中1的个数剑指offer链表题:2019/9/20: 从尾到头打印链表2019/9/20: 链表反转2019...原创 2019-09-21 20:48:09 · 1147 阅读 · 0 评论 -
链表学习1-java篇19.9.16-9.17
这几天老是看到链表的题目,不是链表的反转,就是链表求和……必须把它攻克了,不然题目都刷不了了,所以这两天一直在找相关资料,所以没有刷很太多题。 为了靠自己不看题解地去实现链表的反转打印这题以及后期的链表题目。我不断反思自己为什么对链表有点害怕,甚至不敢开始学习链表的知识,最后我总结如下: 大一的时候学C语言的时候感觉链表怎么这么长,被长度给下住了。代码一长也就意味着...原创 2019-09-17 23:15:17 · 178 阅读 · 0 评论 -
旋转数组的最小数字+堆排介绍19.9.14
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0时间限制:3秒空间限制:32768K最差的方式就是遍历,得到最小的值——>时间复杂度为O(...原创 2019-09-14 18:57:03 · 214 阅读 · 0 评论 -
深入斐波那契类型问题19.9.10
1.题目描述I 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)1.1解题思路 这和斐波那契数列是同一个思想,可以倒过来看:我要走完n层,我有两种方式,在n-1层走1步或者n-2层走2步。依次往下推导可得到这样一个表达式:f(n) = f(n-1)+f(n-2);但是作为递归,...原创 2019-09-21 16:20:47 · 274 阅读 · 0 评论 -
替换空格19.9.9
//replace是java中String的方法,//注意返回值类型和参数类型不一致code:javapublic class Solution { public String replaceSpace(StringBuffer str) { String str1 = str.toString(); str1 = str1.replace("...原创 2019-09-10 16:49:31 · 135 阅读 · 0 评论 -
剑指offer刷题记录——始于19.9.8
接下来这段日子,会给自己定个小目标,每天都能尝试刷几道题,并记录。但每天都能把刷过的题目写在博客里记录下来不是硬性要求,需要对题目有深刻的分析和思维过程的剖析。不会这么及时记录和更新。从小白到大牛,从来都不是一蹴而就的,而是一个脚印一个脚印踩过来的。 学习算法,终究是有好处的,不仅是为了应对招聘时的线上题抑或是面试题,而且最主要的是它能训练自己的思维和态度:严谨,...原创 2019-09-09 23:31:04 · 204 阅读 · 0 评论 -
链表中倒数第K个结点19.9.23
目录题目描述题解第一种第二种第三种题目描述输入一个链表,输出该链表中倒数第k个结点题解第一种这题有很多的想法,我最初想到的是先获取链表的长度,然后根据前后的关系,从前往后遍历,遍历到指定点时,返回该结点。代码如下:/*public class ListNode { int val; ListNode next = null; ...原创 2019-09-24 20:59:45 · 376 阅读 · 1 评论