LeetCode刷題記錄_合並兩個有序鏈表


題目:

將兩個有序鏈表合並為一個新的有序鏈表並返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 

示例:

輸入: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;
        }
    }
}

 之前做就耗了很多時間,一開始沒打算用遞歸求解,但是判斷一些特殊條件時,語句會寫的很復雜


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM