道阻且长z
道阻且长z
全部文章
题解
归档
标签
去牛客网
登录
/
注册
道阻且长z的博客
全部文章
/ 题解
(共11篇)
剑指offer:合并两个排序的链表
思路: 方法一:将两个链表结点挨个进行比较,插入到一个新表中。 方法二:把list2往list1的中插。 比较list2与list1的值:当list2值小等于list1值时往list1的前面插,并让list2指向下一个元素否则不进行插入,list1指向下一个结点。 重复上述操作,直到有一个链表为空...
2019-09-26
17
1321
剑指offer:反转链表
思路: 题目所给的是单链表,想了一下反转后的样子:最后一个结点指向倒数第二个,倒数第二个指向倒数第三个,......,第二个指向第一个,第一个指向null; 知道了反转后各个结点指向哪之后,就需要开始调整每个结点的next指针。 这就需要把结点挨个从链表上摘下来,做调整; 这个调整过程需要两个指针...
2019-09-26
117
4825
剑指offer:调整数组顺序使奇数位于偶数前面
思路: 开辟新数组保存法:创建两个数组,一个用来存奇数,一个用来存偶数,最后合并。 不开辟新数组: 1.用两个下标i,j进行遍历; 2.当i走到偶数时停下,并让j从i的后一个元素开始遍历;(若i走到队尾则循环结束) 3.若j所指的是偶数则继续前进,j遇到奇数则停下(如果j都没遇到奇数则在队尾停...
2019-09-25
7
2250
剑指offer:二进制中1的个数
思路: 1.利用一个结论:一个二进制数n减1后与原二进制数进行&运算( 即n&(n-1) )会消去最右边的1。2.这个结论怎么来的? 假设二进制数101进行减1运算,刚好最右边是1,则得到100,此时用100跟101做&运算,得到的是100,故消去了101左右边的1。 10...
2019-09-25
12
1403
剑指offer:斐波那契数列
思路: 斐波那契数列:0,1,1,2,3,5...F(n-2),F(n-1),F(n)=F(n-2)+F(n-1) 递归 用数组来保存fibonacci数列,然后根据输入的n返回数组下标为n处的值。 根据斐波那契数列的公式,可以用3个变量来表示(也可以只用两个变量) 答案: 1.递归 publi...
2019-09-07
6
1309
剑指offer:用两个栈实现队列
思路: 首先要明确队列的特性是先进先出,栈的特性是先进后出; 在进队列的方法里我们只要有容器能装元素就行了,所以直接往栈1里压; 在出队列方法里,要保证出队列的是最先进入的元素: 最直观的想法就是把栈1的元素挨个出栈,然后往栈2里压。 但是还是要思考一下真的这么简单吗?不是的,栈2为空时才允许...
2019-09-07
24
1160
剑指offer:重建二叉树
思路: 前序遍历:根→左→右中序遍历:左→根→右 由前序遍历序列pre={1,2,4,7,3,5,6,8}可知根结点是1; 则在中序遍历序列in={4,7,2,1,5,3,8,6}中找到1,便可知1所在位置的左侧是左子树,1所在位置的右侧是右子树; 递归调用:将左子树和右子树分别看成一颗树,将其前...
2019-09-03
33
1314
剑指offer:从尾到头打印链表
思路 1.递归;2.利用Java List的add(int index,Integer element);3.利用栈的先进后出4.用Collections.reverse(List<?> list); 答案 1.递归 import java.util.ArrayList; public ...
2019-09-03
0
652
剑指offer:替换空格
思路: 解法一:用Java自带的函数str.toString().replace(" ","%20")。 解法二:在当前字符串上进行替换。 先计算替换后的字符串需要多大的空间,并对原字符串空间进行扩容; 从后往前替换字符串的话,每个字符串只需要移动一次; 如果从前往后,每个字符串需要多次移动,效率...
2019-09-01
34
2028
剑指offer:二维数组中的查找
思路: 暴力解法:对数组第一行进行二分查找,再对数组第二行进行二分查找。 矩阵是有序的:利用二维数组由上到下,由左到右递增的规律。那么选取右上角或者左下角的元素a[row][col]与target进行比较,当target小于元素a[row][col]时,那么target必定在元素a所在列的左边,即...
2019-09-01
12
1315
首页
上一页
1
2
下一页
末页