題目:
將兩個有序鏈表合並為一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。
示例:
輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4
感覺自己有點不適合編程啊,之前做兩數相加就做了好久,這個題其實比兩數相加簡單,用遞歸很容易求解出來,遞歸函數中需要做的
1.若有連個鏈表有空值存在則返回另外一個鏈表
2.若連個鏈表都不為空,則比較鏈表值大小,較小的值賦給node.value,然后更新鏈表指向,node.next則指向遞歸調用函數,返回node,完成
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
ListNode node;
if(l1==null||l2==null)
return l1==null?l2:l1;
else{
if(l1.val<l2.val){
node =new ListNode(l1.val);
l1 = l1.next;
node.next = mergeTwoLists(l1,l2);
}else{
node =new ListNode(l2.val);
l2 = l2.next;
node.next = mergeTwoLists(l1,l2);
}
return node;
}
}
}
之前做就耗了很多時間,一開始沒打算用遞歸求解,但是判斷一些特殊條件時,語句會寫的很復雜
