1. 程式人生 > 其它 >LeetCode No21. 合併兩個有序連結串列

LeetCode No21. 合併兩個有序連結串列

題目

將兩個升序連結串列合併為一個新的 升序 連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。

示例 1:

輸入: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 均按 非遞減順序 排列

思路

兩個連結串列已經有序了,同時遍歷兩個連結串列,每次取小值,如果其中一個連結串列遍歷完了,那直接將另外一個連結串列拼接上即可,算是連結串列操作入門題吧。

AC程式碼

點選檢視程式碼
/**
 * 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 l1, ListNode l2) {
        ListNode node = new ListNode();
        ListNode head = node;
        while( l1!=null && l2!=null ) {
            if( l1.val<=l2.val ) {
                head.next = l1;
                l1 = l1.next;
            } else {
                head.next = l2;
                l2 = l2.next;
            }
            head = head.next;
        }
        if( l1!=null ) {
            head.next = l1;
        }
        if( l2!=null ) {
            head.next = l2;
        }
        return node.next;
    }
}