LeetCode #21. Merge Two Sorted Lists プログラミング練習

問題:
f:id:stlisacity:20180524122411p:plain
難易度: easy
入力: ListNode
目的: 入力された二つのソートされたLinkedListをマージせよ
出力: ListNode

recursiveでもforでも回答できます。
基礎的な問題なので特に罠もなく一つずつ大きさを比較しながらマージしていきましょう。


注意すべき事: 

  • forで回答する場合はdummyのListを用意してマージしていく


以下回答です。

class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null) {
            return l2;
        }
        else if(l2 == null) {
            return l1;
        }
        if(l1.val < l2.val) {
            l1.next = mergeTwoLists(l1.next, l2);
            return l1;
        }
        else {
            l2.next = mergeTwoLists(l1, l2.next);
            return l2;
        }
    }
}


whileの方が簡単ですが余分なメモリを使ってしまうのでrecursiveを使いました。
Time O(n)です。

今日は以上。
よいプログラミング生活を!