演算法 十六 合併兩個排序的鍊錶

2021-09-10 23:04:40 字數 675 閱讀 8623

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

使用遞迴的思想:將兩個鍊錶的節點按大小迴圈插入。

使用選擇排序的思想:因為兩個鍊錶都是有序的,每次取第二個鍊錶的第乙個節點(這樣每次第二個鍊錶的第乙個節點都是第二個鍊錶中最小的),將這個節點插入到到第乙個鍊錶中,如果某次插入的位置是第乙個鍊錶的末尾,則直接將第乙個鍊錶和第二個鍊錶剩餘的部分相連。要注意的是第一次比較時要單獨比較,因為第乙個鍊錶的頭節點可能會改變,之後每次比較都從第一次插入的節點開始,因為第二個鍊錶的剩餘部分的值都大於該節點的值。

遞迴

public listnode merge(listnode list1,listnode list2) 

if(list2 == null)

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

}

使用選擇排序思想

public listnode merge(listnode list1,listnode list2) elseelse if(current2.val < current1.next.val)}}

if(isright)

current2 = temp1;//取出下乙個節點

}return list1;

}

十六 合併兩個排序的鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。public class listnode public class solution if list2 null listnode head null 合併煉表頭 listnode current null...

演算法 合併兩個排序鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。方法一 遞迴 public class listnode public class solution if list2 null 找到合併鍊錶的第乙個值,然後把其餘的加到它的後面 if list1.val l...

演算法 合併兩個排序的鍊錶

題目 輸入兩個遞增排序的鍊錶,合併著兩個鍊錶並使新鍊錶中的結點仍然是按照遞增順序的。例如輸入的鍊錶1和鍊錶2如下,合併後的為鍊錶3。鍊錶的結點定義如下 解題思路 首先可以確定的是,鍊錶1和鍊錶2本身就是遞增的,所以合併的過程可以從鍊錶1,2的頭結點開始,先比較1,2的頭結點中值的大小,將小的值的結點...