【LeetCode】21は、2つのマージは、(再帰的に)リンクされたリストをソート

タイトル

2は、新たなソートされたリストとリターンにリストを命じました。新しいリストは、二つのリストで構成与えられたモザイク内のすべてのノードです。 

例:

入力:1-> 2-> 4、1-> 3-> 4
出力:1-> 1-> 2-> 3-> 4-> 4

出典:滞在ボタン(LeetCode)
リンクhttps://leetcode-cn.com/problems/merge-two-sorted-lists
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

問題への解決策(RPM)

三つの要素を再帰的に:

  • 終了条件:エンドのL2 L1が空または空であるときに、2つは、リストL1およびL2と命名されています
  • 戻り値:各レイヤーの呼び出しは、ソートされたリストの先頭を返します
  • この再帰レベルの内容:ヴァル・L1の値が小さい場合は、ソートされたリストのヘッドと、その後l1.next接触、L2共感

良いイラスト参照リンク:https://leetcode-cn.com/problems/merge-two-sorted-lists/solution/hua-jie-suan-fa-21-he-bing-liang-ge-you-xu -lian-BI /

コード

/**
 * 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) {
        if (l1 == null) {
            return l2;
        }
        if (l2 == null) {
            return l1;
        }
        if (l1.val < l2.val) {
            l1.next = mergeTwoLists(l1.next, l2);
            return l1;
        } else {
            l2.next = mergeTwoLists(l2.next, l1);
            return l2;
        }
    }
}

おすすめ

転載: www.cnblogs.com/coding-gaga/p/11823143.html