๐ค ๋ฌธ์ ์ดํด
๋๊ฐ์ ์ ๋ ฌ๋ ๋งํฌ๋๋ฆฌ์คํธ๋ฅผ ํ๋์ ์ ๋ ฌ๋ ๋งํฌ๋๋ฆฌ์คํธ๋ก ๋ง๋ค์ด๋ผ
https://leetcode.com/problems/merge-two-sorted-lists/
๐ค EX
data example 1
Input: list1 = [1,2,4], list2 = [1,3,4]
Output: [1,1,2,3,4,4]
data example 2
Input: list1 = [], list2 = []
Output: []
data example 3
Input: list1 = [], list2 = [0]
Output: [0]
๐ค ์์ฌ ์ฝ๋
/**
* 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) {
let answer = new ListNode(0) ์๋ก์ด ๋งํฌ๋๋ฆฌ์คํธ ์ ์ธ
let current = answer ํ์ฌ ๋
ธ๋์ ํฌ์ธํฐ
while(list1 && list2){
let list1Num = list1 ? list1.val : Infinity;
let list2Num = list2 ? list2.val : Infinity;
if(list1Num<list2Num){
๋
ธ๋์ list1Num์ ์ฅ ํ
if(list1) list1 = list1.next ๋ค์๊ฐ์ผ๋ก ๋๊น
}else if(list1Num == list2Num){
๋
ธ๋์ list1Num์ ์ฅ ํ
if(list1) list1 = list1.next ๋ค์๊ฐ์ผ๋ก ๋๊น
๋
ธ๋์ list2Num์ ์ฅ ํ
if(list2) list2 = list2.next ๋ค์๊ฐ์ผ๋ก ๋๊น
}
else{
๋
ธ๋์ list1Num์ ์ฅ ํ
if(list2) list2 = list2.next ๋ค์๊ฐ์ผ๋ก ๋๊น
}
}
if (list1) {
list1์ด ๋จ์ ๊ฒฝ์ฐ, ๋๋จธ์ง๋ฅผ ์ถ๊ฐ
}
if (list2) {
list2๊ฐ ๋จ์ ๊ฒฝ์ฐ, ๋๋จธ์ง๋ฅผ ์ถ๊ฐ
}
return answer.next
};
๐ค ํด๊ฒฐํ ์ฝ๋
var mergeTwoLists = function(list1, list2) {
let answer = new ListNode(0)
let current = answer
while(list1 && list2){
let list1Num = list1 ? list1.val : Infinity;
let list2Num = list2 ? list2.val : Infinity;
if(list1Num<list2Num){
current.next = new ListNode(list1Num)
current = current.next
if(list1) list1 = list1.next
}else if(list1Num == list2Num){
current.next = new ListNode(list1Num)
current = current.next
if(list1) list1 = list1.next
current.next = new ListNode(list2Num)
current = current.next
if(list2) list2 = list2.next
}
else{
current.next = new ListNode(list2Num)
current = current.next
if(list2) list2 = list2.next
}
}
if (list1) {
current.next = list1; // list1์ด ๋จ์ ๊ฒฝ์ฐ, ๋๋จธ์ง๋ฅผ ์ถ๊ฐ
}
if (list2) {
current.next = list2; // list2๊ฐ ๋จ์ ๊ฒฝ์ฐ, ๋๋จธ์ง๋ฅผ ์ถ๊ฐ
}
return answer.next
};
๐ค ๋ค๋ฅธ ํ์ด๋ฐฉ๋ฒ
var mergeTwoLists = function (l1, l2) {
if (!l1) return l2;
else if (!l2) return l1;
else if (l1.val <= l2.val) {
l1.next = mergeTwoLists(l1.next, l2);
return l1;
} else {
l2.next = mergeTwoLists(l1, l2.next);
return l2
}
};
๋๋ฌด ๊ฐ๋จํ๊ฒ ํ์ด๋ด์ ๋๋๋ค....
์ฝ๋ ํด์
l1์ ๊ฐ์ด l2์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฒฝ์ฐ, l1์ ๋ค์ ๋ ธ๋๋ฅผ l1.next๋ก ์ค์ ํ๊ณ , l1.next์ l2๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ณํฉํ ๊ฒฐ๊ณผ๋ฅผ l1์ ๋ค์ ๋ ธ๋๋ก ์ค์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ l1์ ๋ฐํํฉ๋๋ค. ์ด๋ ์์ ๊ฐ์ ๊ฐ์ง ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณํฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
l1์ ๊ฐ์ด l2์ ๊ฐ๋ณด๋ค ํฐ ๊ฒฝ์ฐ, l2์ ๋ค์ ๋ ธ๋๋ฅผ l2.next๋ก ์ค์ ํ๊ณ , l1๊ณผ l2.next๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ณํฉํ ๊ฒฐ๊ณผ๋ฅผ l2์ ๋ค์ ๋ ธ๋๋ก ์ค์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ l2๋ฅผ ๋ฐํํฉ๋๋ค. ์ด๋ ์์ ๊ฐ์ ๊ฐ์ง ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ณํฉํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
'์ฝํ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode Top Interview 150 - 242. Valid Anagram (0) | 2023.08.31 |
---|---|
LeetCode Top Interview 150 - 1. Two Sum (0) | 2023.08.31 |
[์๋ฃ๊ตฌ์กฐ] Linked list : Leetcode - 2. Add Two Numbers : ํด๊ฒฐ์ค (0) | 2023.08.28 |
[์๋ฃ๊ตฌ์กฐ] Linked list - 2 (0) | 2023.08.28 |
LeetCode Top Interview 150 - 150. Evaluate Reverse Polish Notation (0) | 2023.08.27 |