由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - java 链表里面dummy node 一问?谢谢
相关主题
明天电面,求建议大牛们帮忙,Rverse Nodes in k-Group
弱问:leetcode里Convert Sorted List to Binary Search Tree看不懂这题
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?LeetCode:Partition List 哪位帮我看看, 为什么总是TLE
刚刚电面bloomberg,被问到一个没看到过的问题请大牛review一下这个Insertion Sort List的解法
再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-Gleetcode上这个链表节点的定义是什么意思?ListNode(int x) : val(x), next(NULL) {}
【我自己写的LinkedList为什么总有错?】弱问题,连反转链表都看不懂了
问了一个链表,1->2->3->4->5, 每两个交换,2->1->4->3->5,f 的面经
请教一道单链表问题链表插入排序都写了一个小时,对人生失去信心了。
相关话题的讨论汇总
话题: listnode话题: head1话题: dummy话题: head2话题: head
进入JobHunting版参与讨论
1 (共1页)
f****e
发帖数: 923
1
刚刚学习链表, 请问 head = dummy 是把dummy的值赋给 head吗? 还是其他含义?
为什么最后返回dummy.next 就是返回合并之后的整个链表?貌似 循环过程没dummy 啥
事?
private ListNode merge(ListNode head1, ListNode head2) {
ListNode dummy = new ListNode(-1);
ListNode head = dummy;
while (head1 != null && head2 != null ) {
if (head1.val < head2.val) {
head.next = head1;
head1 = head1.next;
}else {
head.next = head2;
head2 = head2.next;
}
head = head.next;

}
if (head1 != null) {
head.next = head1;
}
else {
head.next = head2;
}
return dummy.next;
}
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
v*****y
发帖数: 68
2
dummy head的存在是为了避免处理head == null的情况,它就像一个假head,而真head
是dummy.next
f****e
发帖数: 923
3
谢谢解答,请问 head = dummy 是把dummy的值赋给 head吗? 还是其他含义?
为什么运行完 循环之后,没有把 head 重新赋给dummy 然后返回,
dummy 和head 是什么关系,就这一点不太明白,请帮忙,谢谢

head

【在 v*****y 的大作中提到】
: dummy head的存在是为了避免处理head == null的情况,它就像一个假head,而真head
: 是dummy.next

k****i
发帖数: 128
4
还是c++好,直接local reference
f**********r
发帖数: 2137
5
head实际上不是head,每加一个都往后走, head = head.next;
dummy.next才是真正的head

【在 f****e 的大作中提到】
: 谢谢解答,请问 head = dummy 是把dummy的值赋给 head吗? 还是其他含义?
: 为什么运行完 循环之后,没有把 head 重新赋给dummy 然后返回,
: dummy 和head 是什么关系,就这一点不太明白,请帮忙,谢谢
:
: head

A*******e
发帖数: 2419
6
为何要避免处理?这个和C++很不一样啊。

head

【在 v*****y 的大作中提到】
: dummy head的存在是为了避免处理head == null的情况,它就像一个假head,而真head
: 是dummy.next

v*****y
发帖数: 68
7
就这个例子而言,我们最终返回的那个head刚开始还未确定,他可能是head1或head2中
的一个,因此我们先假设有了head,遇到真head之后直接像处理普通node一样加在后面
就可以了。这样有一个很大的好处是clean code。

【在 f****e 的大作中提到】
: 谢谢解答,请问 head = dummy 是把dummy的值赋给 head吗? 还是其他含义?
: 为什么运行完 循环之后,没有把 head 重新赋给dummy 然后返回,
: dummy 和head 是什么关系,就这一点不太明白,请帮忙,谢谢
:
: head

b********a
发帖数: 70
8
dummy head 很好用 恩
l*****o
发帖数: 7
9
Dummy pointer就是你new出来的一个新node,他的next是链表的头节点。
因为如果你对链表的头指针进行操作,需要单独的判断。比如删除,链表里其他节点,
直接让它的前驱连上后继就行,但是头节点因为没有前驱所以得单独判断。如果加上
dummy就不存在这个问题了,让相同的逻辑能处理所有节点,使代码简洁高效而且不容
易出bug。
1 (共1页)
进入JobHunting版参与讨论
相关主题
链表插入排序都写了一个小时,对人生失去信心了。再问大牛们leetcode上面Linkedlist的题,Reverse Nodes in k-G
两个链表怎么查找相交点?【我自己写的LinkedList为什么总有错?】
热腾腾的 LinkedIn 电面题攒RP问了一个链表,1->2->3->4->5, 每两个交换,2->1->4->3->5,
约瑟夫问题 用循环链表算法 时间 复杂度多少请教一道单链表问题
明天电面,求建议大牛们帮忙,Rverse Nodes in k-Group
弱问:leetcode里Convert Sorted List to Binary Search Tree看不懂这题
删除node从list, 这个有内存泄露么,怎么释放内存,对于那个被删除的节点?LeetCode:Partition List 哪位帮我看看, 为什么总是TLE
刚刚电面bloomberg,被问到一个没看到过的问题请大牛review一下这个Insertion Sort List的解法
相关话题的讨论汇总
话题: listnode话题: head1话题: dummy话题: head2话题: head