天天看點

【力扣】難度【簡單】21. 合并兩個有序連結清單

标題:21. 合并兩個有序連結清單

難度:簡單

描述:

将兩個升序連結清單合并為一個新的 升序

連結清單并傳回。新連結清單是通過拼接給定的兩個連結清單的所有節點組成的

【力扣】難度【簡單】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;

    }
}