0
我正在處理「合併兩個排序鏈表」,但它看起來我的頭還沒有被正確更新。合併兩個排序列表,但我的頭沒有更新 - Java
爲了解決這個問題,我嘗試了.val,但它在while循環中無法正常工作。
然後,有線的事情是,當我嘗試.next,它的作品。我完全困惑。 我把這兩個代碼放在下面(工作的和錯誤的),所以你將能夠看到我做了什麼。
有人能給我一個解釋爲什麼第一個不工作,請嗎?
錯誤之一:
/**
* Definition for ListNode.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int val) {
* this.val = val;
* this.next = null;
* }
* }
*/
public class Solution {
/**
* @param ListNode l1 is the head of the linked list
* @param ListNode l2 is the head of the linked list
* @return: ListNode head of linked list
*/
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null)
return l2;
else if (l2 == null)
return l1;
ListNode result = new ListNode(5);
ListNode head = result;
while (l1 != null && l2 != null){
if (l1.val < l2.val){
result = l1;
l1 = l1.next;
}
else{
result = l2;
l2 = l2.next;
}
result = result.next;
}
if (l1 == null){
result = l2;
}
else{
result = l1;
}
return head;
}
}
工作之一:
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
if (l1 == null)
return l2;
else if (l2 == null)
return l1;
ListNode result = new ListNode(5);
ListNode head = result;
while (l1 != null && l2 != null){
if (l1.val < l2.val){
result.next = l1;
l1 = l1.next;
}
else{
result.next = l2;
l2 = l2.next;
}
result = result.next;
}
if (l1 == null){
result.next = l2;
}
else{
result.next = l1;
}
return head.next;
}
唯一的區別是,我在第二個加。接下來。
謝謝!