[Leetcode] 21. Merge Two Sorted Lists โ
Problem โ
๋ ์ซ์๋ก ์ด๋ค์ง ๋งํฌ๋๋ฆฌ์คํธ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ๋จธ์งํ๋ผ.
Solution โ
- list1๊ณผ list2 ์ค์์ ๊ฐ์ด ์์ ๋ ธ๋๋ฅผ head ๋ ธ๋๊ฐ ๊ฐ๋ฅดํค๊ฒํ๋ค.
- ์์ ๋ ธ๋๋ก ์ ์ ๋ ๋ ธ๋๋ ๋ค์๋ ธ๋๋ฅผ ๊ฐ๋ฅดํค๋๋กํ๋ค.
- ๊ทธ๋ ๊ฒ ๋ list ๋ ธ๋๊ฐ null์ ๊ฐ๋ฅดํฌ๋๊น์ง head์ ์ด์ด๋ถ์ด๋๊ฐ๋ค.
JS CODE โ
javascript
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
var mergeTwoLists = function (list1, list2) {
const head = new ListNode()
let node = {
l1: list1,
l2: list2,
rear: head,
}
const getValMvNode = (node, keyStr) => {
const { val, next } = node[keyStr]
node[keyStr] = next
return val
}
while (node.l1 || node.l2) {
let curNodeVal = null
if (node.l1 && node.l2) {
curNodeVal = node.l1.val < node.l2.val ? getValMvNode(node, 'l1') : getValMvNode(node, 'l2')
} else if (node.l1) curNodeVal = getValMvNode(node, 'l1')
else if (node.l2) curNodeVal = getValMvNode(node, 'l2')
// console.log(l1, l2)
node.rear.next = new ListNode(curNodeVal)
node.rear = node.rear.next
}
return head.next
}