【发布时间】:2020-04-03 00:56:08
【问题描述】:
所以我正在做关于合并两个排序链表的hackerrank问题。这就是我所拥有的
// Complete the mergeLists function below.
/*
* For your reference:
*
* SinglyLinkedListNode {
* int data;
* SinglyLinkedListNode next;
* }
*
*/
static SinglyLinkedListNode mergeLists(SinglyLinkedListNode head1, SinglyLinkedListNode head2) {
SinglyLinkedListNode curr1 = head1;
SinglyLinkedListNode curr2 = head2;
SinglyLinkedListNode head = new SinglyLinkedListNode(0);
SinglyLinkedListNode curr = head;
while(curr1.next != null && curr2.next != null){
if(curr1.data < curr2.data ){
curr.next = curr1;
curr = curr.next;
curr1 = curr1.next;
}
else{
curr.next = curr2;
curr=curr.next;
curr2 = curr2.next;
}
}
if (curr1.next == null ){
curr.next = curr2;
}
head = head.next;
return head;
}
private static final Scanner scanner = new Scanner(System.in);
然而这是我得到的输出
1 2 3 4 与
相反1 2 3 3 4
测试用例是
链表 1 : 1,2,3 链表2:3,4
【问题讨论】:
-
由于
curr2.next == null但curr1.next不是null而循环结束时会发生什么? -
@jeppe 是同样的错误
-
@lurker 我在这里不小心删除了它,但是当 curr1.next 为空时它也是一样的。我把它放回去了,还是一样的错误
-
是因为while循环中的条件。您没有考虑第一个链表中的最后一个元素,因为它的下一个元素为空。你的逻辑看起来不对
标签: java merge linked-list