剑指offer
文章平均质量分 86
CrazyJack123
这个作者很懒,什么都没留下…
展开
-
剑指offer学习笔记(Java实现)(26-30)
题目26:复杂链表的复制。定义一个新的数据结构,每个节点除了具有普通链表的next域外,还有一个额外的引用指向任意节点。我们要对由该特殊数据结构形成的链表进行复制。我的方法:也就是克隆一个这种特殊链表,很快想到先不考虑原链表sibling域,复制出一个新的链表,然后再去给sibling域赋值。由于sibling可以指向任何节点,而且我们是根据原链表的sibling来确定新链表中的sibling,所以原创 2017-03-18 19:16:17 · 572 阅读 · 0 评论 -
剑指offer学习笔记(Java实现)(21-25)
题目21;定义一个具有min函数(返回栈内最小值)的栈数据结构。首先这个栈要具有普通栈所具有的push()和pop()方法,那么内部一定包含一个Stack。至于还要能实现min函数,而且还是在O(1)时间复杂度内,我们不得不考虑用额外的空间。如果直接使用一个int变量存储当前的最小值,我们的确可以获得最小值,但是当栈pop()了以后,我们无法获得次小值。我们需要一个数据结构来动态保存每个时刻的最小值原创 2017-03-18 19:11:07 · 273 阅读 · 0 评论 -
剑指offer学习笔记(Java实现)(1-10)
题目3:二维数组中的查找 (二维数组,每行递增,每列递增。输入二维数组,一个整数,判断数组中是否含有此数)我的方法:拿到题目,根据题目条件我提取出这样一个特性:一个数的右边和下面的数都比它大。于是就可以写出一种递归的方法:从左上角开始寻找,针对当前被检查的数字,如果相等返回true;如果小于target我们继续向右和向下寻找;如果大于target就不必继续寻找下去了(因为我们向右或向下寻找只会继续增原创 2016-12-18 12:03:00 · 440 阅读 · 0 评论 -
剑指offer学习笔记(Java实现)(11-20)
题目11:数值的整数次方 书中方法:这道题要注意底数为0的情况。double类型的相等判断。乘方的递归算法。 public double power(double base, int exponent){ //指数为0 if(exponent == 0){ return 1.0; } //底数为0原创 2016-12-12 21:40:51 · 388 阅读 · 0 评论 -
剑指offer学习笔记(Java实现)(31-40)
题目31:连续子数组的最大和在数组中找一个连续子数组,使它的和最大。我的方法:利用一个local维护局部子数组最大和,一个global维护全局子数组最大和。因为子数组要连续,local[i]只能出现两种情况:加上当前a[i],即local[i] = local[i-1]+a[i];重新开始,即local[i] = a[i]。我们取较大的作为局部最大和。global[i]的取值也有两种情况:原来的最大原创 2017-03-18 19:26:22 · 369 阅读 · 0 评论