๐ก ๋ฌธ์
๐ฏ ํ์ด ๊ณผ์
O(1)
์ ๊ณต๊ฐ ๋ณต์ก๋์ O(n)
์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์
ํ์๋ฒ์งธ์ ์ง์๋ฒ์งธ์ ์์นํ ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํ ๋ค์ ๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ด์ฃผ๋ ์์ ์ ํด์ผํฉ๋๋ค.
๋ฆฌ์คํธ์ ์ฒซ๋ฒ์งธ ๋ ธ๋๋ ํญ์ ํ์๋ฒ์งธ ๋ ธ๋์ด๊ณ ํ์์ ์ง์๋ ์์๋๋ก ๋์ค๋ ๊ฒ์ ๋ช ๋ฐฑํ ์ฌ์ค์ด๋,
์ ์ฝ ์กฐ๊ฑด์ ๋ง์กฑํ๊ธฐ ์ํด ํ๋ฒ์ ๋ฆฌ์คํธ ํ์ ๋์ค์ prev
์ cur
ํฌ์ธํฐ๋ฅผ ์ด์ฉํด์
์ด์ ๋ ธ๋์ ๋ค์ ๋ ธ๋ ํฌ์ธํฐ๊ฐ ํ์ฌ ๋ ธ๋์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๋ํ ๋ ๋ฆฌ์คํธ๋ฅผ ํฉ์น๊ธฐ ์ํ mergePointer
๋ ๊ฐ์ฅ ์ต์ ์ ํ์๋ฒ์งธ ๋
ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํฉ๋๋ค.
๋ชจ๋ ์ํ๋ฅผ ๋ง์น๋ฉด mergePointer
๋ก ๋ ๋ฆฌ์คํธ๋ฅผ ์ด์ด์ฃผ๋ฉด๋ฉ๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด ์ ๋ ฅ๋ฐ๋ ๋ฆฌ์คํธ์ ๋ณ๊ฐ๋ก ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์๊ณ ํด๊ฒฐ ๊ฐ๋ฅํฉ๋๋ค.
๐จ๐ป ์ฝ๋
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var oddEvenList = function(head) {
if (!head) {
return null
}
const oddListHead = head
const evenListHead = head.next
let order = 1
let mergeBasePointer = null
let cur = head, prev = null
while (cur) {
const isOdd = order % 2 === 1
if (isOdd) {
mergeBasePointer = cur
}
// prev pointer ๊ฐ ์์ผ๋ฉด cur.next ๋ก pointer ๋ฅผ ๋ฐ๊ฟ์ค๋ค.
if (prev) {
prev.next = cur.next
}
order += 1
prev = cur
cur = cur.next
}
if (mergeBasePointer) {
mergeBasePointer.next = evenListHead
}
return oddListHead
};
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 108 - Convert Sorted Array to Binary Search Tree (Easy) (0) | 2023.06.06 |
---|---|
LeetCode 704 - Binary Search (Easy) (0) | 2023.05.14 |
LeetCode 438 - Find All Anagrams in a String (Medium) (0) | 2023.05.14 |
LeetCode 42 - Trapping Rain Water (Hard) (0) | 2023.04.30 |
LeetCode 238 - Product of Array Except Self (Medium) (2) | 2023.04.24 |
๐ฌ ๋๊ธ