Skip to content

Commit 4c1d721

Browse files
authored
[ PS ] : Reverse Linked List
1 parent 9d0ba97 commit 4c1d721

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

reverse-linked-list/uraflower.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
function ListNode(val, next) {
2+
this.val = (val === undefined ? 0 : val)
3+
this.next = (next === undefined ? null : next)
4+
}
5+
6+
// 첫 번째 시도
7+
// 시간복잡도: O(n)
8+
// 공간복잡도: O(n)
9+
/**
10+
* 단방향 연결 리스트를 reverse하여 반환하는 함수
11+
* @param {ListNode} head
12+
* @return {ListNode}
13+
*/
14+
const reverseList = function (head) {
15+
const newHead = new ListNode();
16+
17+
function _reverseList(head) {
18+
if (!head) {
19+
return newHead;
20+
}
21+
22+
const reversedHead = _reverseList(head.next);
23+
reversedHead.next = new ListNode(head.val, null);
24+
25+
return reversedHead.next;
26+
}
27+
28+
_reverseList(head);
29+
return newHead.next;
30+
};
31+
32+
33+
// 두 번째 시도
34+
// 시간복잡도: O(n)
35+
// 공간복잡도: O(1)
36+
const reverseList = function (head) {
37+
let current = head;
38+
let prev = null;
39+
40+
while (current) {
41+
const next = current.next;
42+
current.next = prev;
43+
prev = current;
44+
current = next;
45+
}
46+
47+
return prev;
48+
};

0 commit comments

Comments
 (0)