s********e 发帖数: 340 | 1 原文在这里:
http://www.programcreek.com/2013/02/leetcode-merge-k-sorted-lis
我的理解是,用PriorityQueue将需要合并的一个列表里的元素都加入到这个
PriorityQueue中。
PriorityQueue会自动对所有加入的元素进行排序。
我不明白的是下面这个部分,为什么用q.add(temp.next)再把节点再加入同一个
PriorityQueue中? 完整程序,请看上面给的链接。谢谢! 不太明白下面的部分。
while (q.size() > 0) {
ListNode temp = q.poll();
p.next = temp;
if (temp.next != null)
q.add(temp.next);
p = p.next;
} |
l*****a 发帖数: 14598 | 2 加的明明是temp.next不是temp
BTW, do u know what is linked list?
【在 s********e 的大作中提到】 : 原文在这里: : http://www.programcreek.com/2013/02/leetcode-merge-k-sorted-lis : 我的理解是,用PriorityQueue将需要合并的一个列表里的元素都加入到这个 : PriorityQueue中。 : PriorityQueue会自动对所有加入的元素进行排序。 : 我不明白的是下面这个部分,为什么用q.add(temp.next)再把节点再加入同一个 : PriorityQueue中? 完整程序,请看上面给的链接。谢谢! 不太明白下面的部分。 : while (q.size() > 0) { : ListNode temp = q.poll(); :
|
s********e 发帖数: 340 | 3 我当然懂了linked list.
但是你看他的程序,他返回的是 head.next;
但是head.next 应该是null, 在这个程序中,就没有给head.null赋值啊?!
你认真看了这个程序了吗?
下面这段代码的目的是什么?我觉得他只要用ListNode temp = q.peek();返回
PriorityQueue的头节点就行了,while里面其他代码的意义是什么?
while (q.size() > 0) {
ListNode temp = q.poll();
p.next = temp;
//keep adding next element of each list
if (temp.next != null)
q.add(temp.next);
p = p.next;
}
【在 l*****a 的大作中提到】 : 加的明明是temp.next不是temp : BTW, do u know what is linked list?
|
l*****a 发帖数: 14598 | 4 p 不是 head吗?
那你说它用priorityQueue的目的是什么
是为了实现哪个基本数据结构?
【在 s********e 的大作中提到】 : 我当然懂了linked list. : 但是你看他的程序,他返回的是 head.next; : 但是head.next 应该是null, 在这个程序中,就没有给head.null赋值啊?! : 你认真看了这个程序了吗? : 下面这段代码的目的是什么?我觉得他只要用ListNode temp = q.peek();返回 : PriorityQueue的头节点就行了,while里面其他代码的意义是什么? : while (q.size() > 0) { : ListNode temp = q.poll(); : p.next = temp; : //keep adding next element of each list
|
s******n 发帖数: 1 | 5 第一次进入while loop,p就是head,那 p.next = temp;就是给head.next赋值。
linklist的一个节点不要看做一个node,看做一个list,那priorityqueue里面就是几
串list。每次pop完一个元素后,把它所在list的下一个元素提进queue里面。 |