File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
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
+ } ;
You can’t perform that action at this time.
0 commit comments