合併兩個排序的鍊錶

2022-07-15 04:51:11 字數 1014 閱讀 3383

題目描述

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

題目分析  

假如list1中的頭節點是小於list2中的,那麼新的鍊錶的頭節點必將是list1的頭節點,同理對list2也一樣,那麼在比較完頭節點之後,再將list1中的下乙個節點再與list2中的頭節點比較,同樣誰小誰進入新鍊錶,然後再比較,直到兩個鍊錶比較完,故可用非遞迴或遞迴兩種方式來做。

**如下:

(1)非遞迴思想

/*

public class listnode }*/

public

class

solution

if(list2 == null

) listnode current = new listnode(-1);//建立乙個當前指標

listnode root =current;//頭結點

while(list1 != null && list2 != null

)else

}if(list1 != null

)

if(list2 != null

)

return

root.next;

}}

(2)遞迴思想

public

class

solution

if(list2 == null

) listnode head = null

;

if(list1.val <=list2.val)

else

return

head;

}}

做題目的時候還是要訓練到位,建議先自己想,並且同時實現遞迴和非遞迴版本,因為面試的時候一般都會考察。

合併兩個排序鍊錶

struct listnode class solution else while pstart1 null pstart2 null plast next pstart1 plast pend1 pend1 pend1 next pstart1 pend1 else plast next psta...

合併兩個排序鍊錶

描述 將兩個排序鍊錶合併為乙個新的排序鍊錶樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 將兩個鍊錶當中的對應元素的值進行比較,重新確定新鍊錶當中元素的位置。若第乙個鍊錶當前位置的值小於第二個鍊錶當前值,則不需要改變位置,第乙個鍊錶的指標...

合併兩個排序鍊錶

問題描述 將兩個排序鍊錶合併為乙個新的排序鍊錶 樣例 給出1 3 8 11 15 null,2 null,返回1 2 3 8 11 15 null。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...