LeetCode 0021 合併兩個有序鍊錶

2021-09-29 08:25:10 字數 946 閱讀 4682

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:

輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

設定乙個dummy node,用來返回合併後的新鍊錶;同時宣告乙個prev node,用來追蹤新鍊錶的尾結點,以便可以更新新結點。

我們重複以下過程,直到 l1 或者 l2 指向了 null :如果 l1 當前位置的值小於等於 l2 ,我們就把 l1 的值接在 prev 節點的後面同時將 l1 指標往後移乙個。否則,我們對 l2 做同樣的操作。不管我們將哪乙個元素接在了後面,我們都把 prev 向後移乙個元素。

在迴圈終止的時候, l1 和 l2 至多有乙個是非空的。由於輸入的兩個鍊錶都是有序的,所以不管哪個鍊錶是非空的,它包含的所有元素都比前面已經合併鍊錶中的所有元素都要大。這意味著我們只需要簡單地將非空鍊錶接在合併鍊錶的後面,並返回合併鍊錶。

/**

* definition for singly-linked list.

* public class listnode

* }*/class

solution

else

// p指標後移,追蹤新鍊錶當前最後乙個結點

p = p.next;}if

(l1 == null) p.next = l2;

if(l2 == null) p.next = l1;

return dummy.next;

}}

時間複雜度: o(m

+n

)o(m + n)

o(m+n)

;空間複雜度: o(1

)o(1)

o(1)

。同上。

Leetcode 0021 合併有序鍊錶

將兩個有序的鍊錶合併為乙個新鍊錶,要求新的鍊錶是通過拼接兩個鍊錶的節點來生成的,且合併後新鍊錶依然有序。示例1輸入,返回值示例2輸入,返回值對第乙個節點進行特殊處理。新建乙個節點,作為結果鍊錶的頭節點。分別使用兩個指標指向兩條鍊錶,比較兩個指標指向的資料域的大小,將資料域大的那個節點作為頭節點的ne...

LeetCode 合併兩個鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 遍歷解法 同時不斷遍歷兩個鍊錶,取出小的追加到新的頭節點後,直至兩者其中乙個為空 再將另一者追加的新鍊錶最後 public listnode ...

LeetCode 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4class solution else listnode p new head while l1 null l2 null else p p ne...