演算法入門 10 合併兩個有序表

2021-10-01 17:27:17 字數 641 閱讀 2439

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

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

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

def mergetwolists(l1: listnode, l2: listnode) -> listnode:

# 合併兩個有序列表

l3 = t=listnode(0)

while l1 or l2:

if l1 and l2:

if l1.val2->4, 1->3->4

l1 = listnode(1)

l2 = listnode(2)

l3 = listnode(3)

l1.next = l2

l2.next = l3

l4 = listnode(1)

l5 = listnode(3)

l6 = listnode(4)

l4.next = l5

l5.next = l6

l3 = mergetwolists(l1,l4)

while l3:

print(l3.val,end=" ")

l3 = l3.next

合併兩個有序表

題目 兩串數字有序,分別用順序表和煉表的方式,將兩串數字合併。一 順序表 思路 如有有序表a,b a 1 2 4 5 5 b 2 3 3 6 7 1.一開始 i 指向 a的開頭元素 即1 同理 j 指向 b開頭元素 2 2.a i 和 b j 中對比,選較小的放入新錶c中 include inclu...

演算法 合併兩個有序鍊錶

有兩種方法,迭代和遞迴。迭代 不帶頭結點 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...