/*
* 輸入兩個單調遞增的鏈表,輸出兩個鏈表合成後的鏈表,當然我們需要合成後的鏈表滿足單調不減規則。
* 思路:
* 魯棒性:如果list爲空,返回list2;如果list2爲空,返回list1;如果兩者都爲空,返回空
* 比較list1.val和list2.val的頭節點,假設頭節點是list1
* 比較list1.next.val和list2.val的值,較小的那個值作爲list1下一個節點(保證遞增性)
*/
public class MergeList {
public ListNode merge(ListNode list1, ListNode list2) {
if(list1 == null && list2 == null)
return null;
if(list1 == null)
return list2;
if(list2 == null)
return list1;
if(list1.val <= list2.val) { //頭節點是list1
list1.next = merge(list1.next, list2);
return list1;
}
else {
list2.next = merge(list1, list2.next);
return list2;
}
}
public static void main(String[] args) {
ListNode node = new ListNode(1);
node.next = new ListNode(2);
node.next.next = new ListNode(3);
node.next.next.next = new ListNode(4);
node.next.next.next.next = new ListNode(5);
ListNode node2 = new ListNode(4);
node2.next = new ListNode(5);
node2.next.next = new ListNode(6);
ListNode result = new MergeList().merge(node, node2);
while(result != null) {
System.out.print(result.val + " ");
result = result.next;
}
}
}
《劍指offer》-合成兩個單鏈表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.