21. Merge Two Sorted Lists

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
使用兩個指針,比較第一個鏈表和第二個鏈表的元素,如果第二個鏈表的元素大于第一個的,就把第一個指針后移。否則就將第二個指針所指的元素插在第一個指針的前面。這樣做不需要一個新的鏈表來儲存,也比較快。

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var mergeTwoLists = function(l1, l2) {
    var pointer1 = l1;
    var pointer2 = l2;
    while (pointer1!==null&&pointer2!==null) {
        if (pointer1.val<=pointer2.val) {
            if (pointer1.next===null) {
                pointer1.next = pointer2;
                return l1;
            }
            pointer1 = pointer1.next;
        } else {
            var temp = new ListNode(pointer1.val);
            temp.next = pointer1.next;
            pointer1.val = pointer2.val;
            pointer1.next = temp;
            pointer2 = pointer2.next;
        }
        if (pointer2===null) {
            return l1;
        }
        
    }
    return l1 ? l1 : l2;
};
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容