标題:21. 合并兩個有序連結清單
難度:簡單
描述:
将兩個升序連結清單合并為一個新的 升序
連結清單并傳回。新連結清單是通過拼接給定的兩個連結清單的所有節點組成的

輸入: l1 = [1,2,4], l2 = [1,3,4]
輸出: [1,1,2,3,4,4]
示例 2:
輸入: l1 = [], l2 = []
輸出: []
示例 3:
輸入: l1 = [], l2 = [0]
輸出: [0]
提示:
兩個連結清單的節點數目範圍是 [0, 50]
-100 <= Node.val <= 100
l1 和 l2 均按 非遞減順序 排列
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/merge-two-sorted-lists
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
執行結果: 通過
執行用時: 0 ms, 在所有 Java 送出中擊敗了100.00%的使用者
記憶體消耗: 37.9 MB, 在所有 Java 送出中擊敗了16.96%的使用者
通過測試用例: 208 / 208
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
//連結清單2空 傳回連結清單1
if(list2 == null){
return list1;
}
//連結清單1空,傳回連結清單2
if(list1 == null){
return list2;
}
//建立空連結清單
ListNode node = new ListNode(0);
//給連結清單節點指派
ListNode temp = node;
//如果連結清單1,2有資料就循環周遊
while(list1 != null && list2 != null){
if(list1.val < list2.val){
//目前節點指派
temp.val = list1.val;
//将下一個節點指向list1
temp.next=list1;
//将目前節點,切換到下一節點
temp =temp.next;
//将list1切換到下一個節點
list1 = list1.next;
}else{
//目前節點指派
temp.val = list2.val;
//将下一個節點指向list2
temp.next=list2;
//将目前節點,切換到下一節點
temp =temp.next;
//将list1切換到下一個節點
list2 = list2.next;
}
}
//如果list1沒資料
while(list1 != null){
//給目前節點指派
temp.val =list1.val;
//list1切換到下一個節點
list1 = list1.next;
//将list1指派給下一個節點
temp.next = list1;
//切換到下一個節點
temp = temp.next;
}
while(list2 != null){
//給目前節點指派
temp.val = list2.val;
//list2切換到下一個節點
list2 = list2.next;
//将list2指派給下一個節點
temp.next = list2;
//切換到下一個節點
temp = temp.next;
}
return node;
}
}