[Leet Code] Merge Two Sorted Lists


#質問:LINK


指定した2つのソートされた接続リストを昇順でマージする関数

¥2,000



に感謝


Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]

私が解いたコード


💟 複文

var mergeTwoLists = function(list1, list2){
    let currentNode = new ListNode();
    let headNode = currentNode;
    
    while(list1 !== null && list2 !== null){
        if(list1.val < list2.val){
            currentNode.next = list1;
            list1 = list1.next;
        } else {
            currentNode.next = list2;
            list2 = list2.next;
        }

        currentNode = currentNode.next;
    }

    currentNode.next = list1 !== null ? list1 : list2;
    return headNode.next;
}

💟 さいきかんすう

var mergeTwoLists = function(list1, list2){
    if(list1 === null) return list2;
    if(list2 === null) return list1;

    if(list1.val < list2.val){
        list1.next = mergeTwoLists(list1.next, list2);
        return list1;
    }

    list2.next = mergeTwoLists(list1, list2.next);
    return list2;
}

#整理想法

  • 入力値を理解するのは難しいです.
  • 以前に接続リストの学習方法を用いて,たどたどしい複文で解いた.
  • でもCurrentNodeの情報は最初は単独で保存されていなかったので、回転が終わったら、最初の値はどうやって探したのでしょうか?!あわてふためく.
  • で悩んだあげく、他の人のコードをこっそり見て、最初にhead=currentと保存されているものを見て、おでこを預けました.最後の段階でぼんやりしていた
  • はこのようにコードを見て、ある人はコメントの中で再帰関数で解くことができると言って、だからコードを見ないで、私も再帰関数で1回解いた.