題目描述
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
題目分析
假如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)遞迴思想
publicclass
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。解題思路 遍歷第二個鍊錶的每乙個節點,然後與第乙個節點的第乙個節點比較,如果第二個鍊錶節點的值小於第乙個,就插入到第乙個煉表裡,如果大於就到下乙個節點。...