紀(jì)念一次leetcode提交一次就accepted的喜悅

題目比較簡(jiǎn)單:

<h2>Merge Two Sorted Lists</h2>
<h5>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.</h5>

簡(jiǎn)要說(shuō)就是合并兩個(gè)有序鏈表。
如果新建一個(gè)列表,遍歷兩個(gè)列表依據(jù)大小復(fù)制到新列表中,比較簡(jiǎn)單,但是空間復(fù)雜度為O(n+m),所以想著直接在原列表上合并;

直接上JS代碼:

/**
 * 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 prev = null;
    var last = null;
    if (l1 && l2 && l1.val > l2.val) {
        return mergeTwoLists(l2, l1); //保證起始狀態(tài)l1頭結(jié)點(diǎn)小于l2的
    }
    var head = l1 ? l1 : l2;
    while (l1 && l2) {
        prev = l1;
        while (l1 && l1.val <= l2.val) {
            prev = l1;
            l1 = l1.next;
        }
        //開(kāi)始第一個(gè)大于l2的,此時(shí)l1.val > l2.val
        if (l1) {
            prev.next = l2;
            last = l2;
            while (l2 && l2.val < l1.val) {
                last = l2;
                l2 = l2.next;
            }
            last.next = l1;
        } else {
            prev.next = l2;
        }
    }
    return head;
};

思路也很簡(jiǎn)單:將l2并入到l1中(l1的頭結(jié)點(diǎn)<l2的頭結(jié)點(diǎn))。思考兩種情況:l1的結(jié)點(diǎn)什么時(shí)候大于l2的結(jié)點(diǎn),當(dāng)大于的時(shí)候怎么做,小于的時(shí)候怎么做即可。于是有了上述代碼,不復(fù)雜一看就明白。
寫(xiě)此記錄一下第一次提交就accepted的一種喜悅感。希望以后能越來(lái)越多的一次通過(guò)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,916評(píng)論 0 33
  • leetcode刷題記錄本文記錄一下leetcode刷題記錄,記錄一下自己的解法和心得。 LeetCode Two...
    EarthChen閱讀 3,602評(píng)論 0 6
  • 2. Add Two Numbers 先初始化兩個(gè)結(jié)點(diǎn),一個(gè)用來(lái)做head,一個(gè)作為指引node不斷向下延續(xù)的指針...
    Morphiaaa閱讀 970評(píng)論 0 0
  • //leetcode中還有花樣鏈表題,這里幾個(gè)例子,冰山一角 求單鏈表中結(jié)點(diǎn)的個(gè)數(shù)----時(shí)間復(fù)雜度O(n)這是最...
    暗黑破壞球嘿哈閱讀 1,656評(píng)論 0 6
  • 我們?cè)?yáng)光 我們?cè)?yáng)光 大步跨過(guò)那不深不淺的記憶 在回憶的這小河里 我駐足徜徉 遠(yuǎn)離了那喧鬧的人群 耳邊卻...
    圖圖釘閱讀 369評(píng)論 2 6

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