[leetcode] 問題解答と解説。21. Merge Two Sorted Lists [easy]
年末まで毎日leetcodeと向き合います。
今日のLeatCodeはこちら。
Merge Two Sorted Lists ルール
2つのlistがあり、それらを1つのlistに順番に並べろというもの
問題
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}
のような