演算法探索 合併兩個有序鍊錶

2021-10-24 04:08:46 字數 653 閱讀 8799

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

示例:

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

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

1.新建兩個鍊錶(head和current),乙個負責儲存頭部最後返回,乙個負責往後移動,蒐羅資料;

2.待合併的兩個列表,誰小誰如佇列,假如只剩下乙個不為空的鍊錶,則連線到尾部直接返回。 

/*

*用途:合併兩個有序鍊錶

*/public listnode mergetwolists(listnode l1, listnode l2) else

listnode head = current;

while (l1 != null || l2 != null)

if (l2 == null)

if (l1.val <= l2.val) else

current = current.next;

}return head;

}

leetcode提交結果:

演算法 合併兩個有序鍊錶

有兩種方法,迭代和遞迴。迭代 不帶頭結點 node merge node head1 node head2 else 當前排序好的鍊錶的末尾節點 node pcurrent head while p1 null p2 null else 還有一方沒有遍歷完的情況 if p1 null pcurren...

演算法 合併兩個有序鍊錶

1.迭代,新建乙個哨兵節點,通過它的next指標指向串聯起兩個鍊錶 比較 l1 和 l2哪乙個比較小,讓哨兵節點的next指向比較小的節點 哨兵節點 l1 l2依次後推,直到又乙個鍊錶為空 如果 l1 為空,則哨兵節點指向l2 注意返回值為哨兵節點的next,因為哨兵節點的第乙個值是隨意給的 cla...

合併兩個有序鍊錶

鍊錶的題目總是讓我很惆悵。動輒就會runtime error。比如這題,額外用了乙個節點的空間來儲存頭節點。我很不情願多用這個空間,不過貌似不行。貌似不行,實際可行,見附錄。把頭節點提出迴圈 實現類 class solution else if l1 null p next l1 if l2 nul...