題目:
將兩個有序鏈表合並為一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。
示例:
輸入: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; } } }
之前做就耗了很多時間,一開始沒打算用遞歸求解,但是判斷一些特殊條件時,語句會寫的很復雜