-
Notifications
You must be signed in to change notification settings - Fork 125
/
Copy pathYjason-K.ts
45 lines (39 loc) ยท 1.37 KB
/
Yjason-K.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
* 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);
* }
* }
*/
/**
* ์ฃผ์ด์ง ๋จ์ผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์์ ๋ค์์ N๋ฒ์งธ ๋
ธ๋๋ฅผ ์ ๊ฑฐํ๋ ํจ์
* @param {ListNode | null} head - ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์ ๋
ธ๋
* @param {number} n - ๋ค์์ n๋ฒ์งธ ๋
ธ๋
* @returns {ListNode | null} - n๋ฒ์งธ ๋
ธ๋๊ฐ ์ ๊ฑฐ๋ ์๋ก์ด ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์์ ๋
ธ๋
*
* ์๊ฐ ๋ณต์ก๋: O(N)
* - ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ํ ๋ฒ ์ํํ์ฌ ๊ธธ์ด๋ฅผ ์ฐพ๊ณ , ๋ค์ ํ ๋ฒ ์ํํ์ฌ ๋
ธ๋๋ฅผ ์ญ์ (2N)
* ๊ณต๊ฐ ๋ณต์ก๋: O(1)
* - ์ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, ํฌ์ธํฐ๋ง ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌ
*/
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
let headlength = 0, cur = head;
// ์ ์ฒด ๊ธธ์ด ๊ตฌํ๊ธฐ
while (cur) {
headlength++;
cur = cur.next;
}
// ์ญ์ ํ ๋
ธ๋ ์์น ๊ณ์ฐ (length - n)
let dummy = new ListNode(0, head);
cur = dummy;
for (let i = 0; i < headlength - n; i++) {
cur = cur.next;
}
// ๋
ธ๋ ์ญ์ (n๋ฒ์งธ ๋
ธ๋ ์ ๊ฑฐ)
cur.next = cur.next?.next || null;
return dummy.next;
}