題目:給定兩個有序單鏈表的頭節點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+n), 空間複雜度o(1)的解
public
static node mergelist
(node head1, node head2)
node head = head1.value < head2.value? head1 : head2;
node cur1 = head == head1? head1 : head2;
node cur2 = head == head1? head2 : head1;
//用於連線較小的節點
node pre = null;
//用於儲存cur2後面的鍊錶
node next = null;
while
(cur1 != null && cur2 != null)
else
} pre.next = cur1 == null? cur2 : cur1;
return head;
}
合併兩個有序單鏈表
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...
合併兩個有序的單鏈表
public node merge node head1 node head2 node head head1.value head2.value head1 head2 確定合併的頭結點 node cur1 head head1 head1 head2 cur1引用的是合併頭結點所在的鍊錶 nod...