剣指Offer面接問題25:2つのソートを組み合わせたチェーンテーブル(再帰+非再帰)Javaコード実装
1113 ワード
テーマ:2つのインクリメンタルソートのチェーンテーブルを入力し、この2つのチェーンテーブルを結合し、新しいチェーンテーブルのノードをインクリメンタルソートします.
2つのチェーンテーブルのノードを絶えず比較し、1つのチェーンテーブルがすべて追加されるまで、小さなものを新しいチェーンテーブルに追加し、別のチェーンテーブルの残りを新しいチェーンテーブルの後に直接つなぎます.空のチェーンテーブルの処理に注意してください.
再帰的でないコード:
2つのチェーンテーブルのノードを絶えず比較し、1つのチェーンテーブルがすべて追加されるまで、小さなものを新しいチェーンテーブルに追加し、別のチェーンテーブルの残りを新しいチェーンテーブルの後に直接つなぎます.空のチェーンテーブルの処理に注意してください.
再帰的でないコード:
//
public static ListNode merge(ListNode list1,ListNode list2){
if(list1==null)
return list2;
else if(list2==null)
return list1;
ListNode newHead=null;
ListNode tmp=null;
//
//tmp
while(list1!=null&&list2!=null){
if(list1.value
再帰実装: //
public static ListNode mergeRecur(ListNode list1,ListNode list2){
if(list1==null)
return list2;
if(list2==null)
return list1;
ListNode newHead=null;
if(list1.value<=list2.value){
newHead=list1;
newHead.next=mergeRecur(list1.next, list2);
}else{
newHead=list2;
newHead.next=mergeRecur(list1, list2.next);
}
return newHead;
}