【題目】
給定兩個有序單鏈表的頭節點head1和head2,請合併兩個有序鍊錶,合併後的鍊錶依然有序,並返回合併後鍊錶的頭節點。
【思路】
選擇小的head作為頭結點,然後將另乙個鍊錶的所有節點併入head較小的鍊錶中即可
【python】
def merge(head1,head2):
if head1 == none:
return head2
if head2 == none:
return head1
head == head1 if head1.val < head2 else head2
cur1 = head1 if head == head1 else head2
cur2 = head1 if head == head2 else head1
pre = none
next = none
while cur1 != none and cur2 != none:
if cur1.val <= cur2.val:
pre = cur1
cur1 = cur1.next
else:
next = cur2.next
pre.next = cur2
cur2.next = cur1
pre = cur2
cur2 = next
pre.next = cur1 if cur2 == none else cur2
return head
【另乙個題目】
合併兩個已排序的鍊錶,並將其作為乙個新列表返回。新列表應該通過拼接前兩個列表的節點來完成。
例如:輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4
【python】
def merge(l1,l2):
dummy = listnode(0)
s = dummy
while l1 and l2:
if l1.val > l2.val:
s.next = l2
l2 = l2.next
else:
s.next = l1
l1 = l1.next
if l1:
while l1:
s.next = l1
if l2:
while l2:
s.next = l2
return dummy.next
合併兩個有序單鏈表
include using namespace std typedef struct nodenode,linklist void creatlist linklist l void insert int n,node p void show linklist l cout num head2 ne...
合併兩個有序單鏈表
思路 第一種 遞迴法 這個方法不好想,遞過去的時候做的事情是找到新的單鏈表的下乙個節點,歸的時候做的是告訴每個節點的next是什麼繫結關係,帶入資料就能知道怎麼回事 public listnode merge listnode a,listnode b if b null listnode newh...
合併兩個有序單鏈表
題目 給定兩個有序單鏈表的頭節點head1和head2,請合併兩個有序鍊錶,合併後的鍊錶依然有序,並返回合併後的鍊錶的頭節點。例如 0 2 3 7 null 1 3 5 7 9 null 合併後的鍊錶為 0 1 2 3 3 5 7 7 9 null 本題考察鍊錶基本操作 關鍵是能寫出時間複雜度o m...