森田賢二のleetCodeの使い方、解説、解答を毎日更新しているキャラクター

[leetcode] 問題解答と解説。21. Merge Two Sorted Lists [easy]

[leetcode] 問題解答と解説。21. Merge Two Sorted Lists [easy]

森田賢二のleetCode
森田賢二のleetCode

年末まで毎日leetcodeと向き合います。

今日のLeatCodeはこちら。

Merge Two Sorted Lists ルール

2つのlistがあり、それらを1つのlistに順番に並べろというもの

問題

Merge Two Sorted Lists [easy]

Merge Two Sorted Lists 解答 一例

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */

function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {
    let head = new ListNode()
    let list = head // 初期値の参照を渡す
    while(list1 && list2){ //処理した後のlist1.nextとlist2.nextがあればtrue
        if(list1.val < list2.val){
            list.next = list1
            list1 = list1.next // 次のnode
        } else {
            list.next = list2
            list2 = list2.next // 次のnode
        }
        list = list.next // 保管場所のポイントを更新
    }
    list.next = list1 || list2 // どちらかある方はあとはそのまま
    return head.next // 最初のnodeを返す
};

問題ではclassとして既にNodeListが用意されているが、
Objectでも表現できそう

{value: -1, next: null}

のような

カテゴリー leetCode