劍指Offer 面試題17 合併兩個排序的鍊錶

2022-09-03 11:12:09 字數 938 閱讀 1052

題目描述

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。

思路1:

分別用p1,p2兩個指標掃瞄兩個有序鍊錶,p3指標去構建新鍊錶h3.

p1.val <= p2.val,則p3把p1指向的結點加入h3,p1後移動。反之,對p2進行對應操作。

**:(未驗證正確性,提交時顯示超時,所以不知道功能是否實現,還是僅僅時間複雜度高?)

public listnode merge(listnode list1,listnode list2) 

if(list2 == null)

listnode p1 = list1;

listnode p2 = list2;

listnode list3;

if(list1.val

<= list2.val)else

listnode p3 = list3;

while(p1 != null && p2 != null)else

p3 = p3.next;

}if(p1 == null)

if(p2 == null)

return list3;

}

思路2:

採用遞迴的思想

**:

public listnode merge(listnode list1,listnode list2) 

if(list2 == null)

listnode list3;

if(list1.val <= list2.val)else

return list3;

}

劍指offer 面試題17

題目 合併兩個排序的單向鍊錶 自己所寫 如下 listnode mergesortedlists listnode phead1,listnode phead2 listnode mergetwolist listnode pfirst,listnode psecond if phead pnext...

劍指offer 面試題17 合併兩個排序的鍊錶

題目 輸入兩個遞增排序的鍊錶,合併這兩個鍊錶並使新鍊錶中的結點仍然是按照遞增排序的。思路 每次從兩個鍊錶中選取較小的結點作為新鍊錶的結點,那麼這裡有兩種方法,迴圈或者遞迴。1 迴圈,每次取出兩個鍊錶中較小的結點插入新鍊錶,到達其中乙個鍊錶的尾結點時,另外乙個鍊錶的其餘部分直接接在這個尾結點上。2 從...

劍指offer之面試題17 合併兩個排序的鍊錶

題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。思路 養成好習慣,一旦有鍊錶作為形參傳遞,都要對鍊錶是否為空做判斷,防止空指標異常,至於怎麼處理,稍後會講。當鍊表都不為空時,比較兩個鍊錶的頭結點值的大小,較小者作為新的頭結點儲存,不妨設較小的頭結...