合并兩個有序鏈表

鏈表概念:
  • 是由一組節(jié)點組成的的集合,其中每個數(shù)據(jù)項都是一個節(jié)點的一部分,每個節(jié)點還包含指向下一個節(jié)點的鏈接。
  • 鏈表是結(jié)構(gòu)體最重要的應用, 它是一種非固定長度的數(shù)據(jù)結(jié)構(gòu),是一種動態(tài)存儲技術, 它能夠根據(jù)數(shù)據(jù)的結(jié)構(gòu)特點和數(shù)量使用內(nèi)存,尤其適用于數(shù)據(jù)個數(shù)可變的數(shù)據(jù)存儲。
鏈表基本元素
  • 1.節(jié)點:每個節(jié)點有兩個部分,左邊部分稱為值域,用來存放用戶數(shù)據(jù);右邊部分稱為指針域,用來存放指向下一個元素的指針。
  • 2.head:head節(jié)點永遠指向第一個節(jié)點
  • 3.tail: tail永遠指向最后一個節(jié)點
  • 4.None:鏈表中最后一個節(jié)點的指針域為None值


    image.png
頭指針與頭結(jié)點以及首元結(jié)點的關系:
image.png
題目

將兩個有序鏈表合并為一個新的有序鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節(jié)點組成的。

示例

輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
思路一: 迭代
  • 創(chuàng)建一個新的鏈表用來存儲排列數(shù)據(jù), 然后用while循環(huán)檢測 l1和 l2中的val值,如果l1.var<=l2.var,那么就讓新鏈表的next指針指向l1的val,,然后改變l1的指針指向并且將l1的下一個值指向l1,依次迭代,反之,如果l1.val>l2.var 那么就讓新鏈表的next指針指向l2的val,,然后改變l2的指針指向并且將l2的下一個值指向l2,依次迭代,直到左右節(jié)點迭代完,判斷l(xiāng)1是否為空,返回新鏈表l3.
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        
        if (l1 == null) return l2;
        if (l2 == null) return l1;
        
        // 頭結(jié)點
        ListNode head;
        if (l1.val <= l2.val) {
            head = l1;
            l1 = l1.next;
        } else {
            head = l2;
            l2 = l2.next;
        }
        
        ListNode cur = head;
        while (l1 != null && l2 != null) {
            if (l1.val <= l2.val) {
                cur = cur.next = l1;
                l1 = l1.next;
            } else {
                cur = cur.next = l2;
                l2 = l2.next;
            }
        }
        
        if (l1 == null) {
            cur.next = l2;
        } else if (l2 == null) {
            cur.next = l1;
        }
        return head;
        
    }
}

思路二 遞歸

public ListNode mergeTwoLists(ListNode k1, ListNode k2) {
        if (k1 == null) return k2;
        if (k2 == null) return k1;
        
        if (k1.val <= k2.val) {
            k1.next = mergeTwoLists(k1.next, k2);
            return k1;
        } else {
            k2.next = mergeTwoLists(k1, k2.next);
            return k2;
        }
    }
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容