Skip to content

Commit 737a907

Browse files
committed
reverse linked list solution
1 parent d2b5c4e commit 737a907

1 file changed

Lines changed: 78 additions & 63 deletions

File tree

reverse-linked-list/robinyoon-dev.js

Lines changed: 78 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -5,82 +5,97 @@
55
* this.next = (next===undefined ? null : next)
66
* }
77
*/
8-
98
/**
109
* @param {ListNode} head
1110
* @return {ListNode}
1211
*/
1312
var reverseList = function (head) {
1413

15-
/**정리
16-
ListNode {
17-
val: number;
18-
next: ListNode | null; //
19-
}
20-
*/
21-
22-
/**
23-
설명에 나와 있는 head=[1, 2, 3, 4, 5]는 실제로 다음과 같음.
24-
const head =
25-
new ListNode(
26-
1,
27-
new ListNode(
28-
2,
29-
new ListNode(
30-
3,
31-
new ListNode(
32-
4,
33-
new ListNode(5, null)
34-
)
35-
)
36-
)
37-
);
38-
*/
39-
40-
/**
41-
계획
42-
1. ListNode -> Array로 바꾸는 함수 생성
43-
2. const headArray는 head를 Array로 바꾼 값
44-
3. const reversedArray는 headArray를 reverse한 배열
45-
4. const result는 reversedArray를 ListNode로 바꾼 값
46-
5. return result
47-
*/
48-
49-
// ListNode를 Array로 바꿔주는 함수
50-
const getToArray = (listNode) => {
51-
const tempArray = [];
52-
let cur = listNode; // 객체 참조 복사!
53-
54-
while (cur !== null) {
55-
tempArray.push(cur.val);
56-
cur = cur.next;
57-
}
58-
return tempArray;
14+
let prev = null; // 이전 노드를 기억할 변수 (처음엔 이전 노드가 없으니 null)
15+
16+
while (head!== null) {
17+
let nextTemp = head.next;
18+
head.next = prev;
19+
prev = head;
20+
head = nextTemp;
5921
}
22+
return prev;
23+
24+
};
6025

61-
const getReversedArray = (arr) => {
26+
// -------------6기 참여 때의 풀이-----------------
27+
// var reverseList = function (head) {
6228

63-
const reversedArray = [...arr].reverse();
29+
// /**정리
30+
// ListNode {
31+
// val: number;
32+
// next: ListNode | null; //
33+
// }
34+
// */
6435

65-
return reversedArray;
66-
}
36+
// /**
37+
// 설명에 나와 있는 head=[1, 2, 3, 4, 5]는 실제로 다음과 같음.
38+
// const head =
39+
// new ListNode(
40+
// 1,
41+
// new ListNode(
42+
// 2,
43+
// new ListNode(
44+
// 3,
45+
// new ListNode(
46+
// 4,
47+
// new ListNode(5, null)
48+
// )
49+
// )
50+
// )
51+
// );
52+
// */
6753

68-
const getToListNode = (arr) => {
69-
const dummy = new ListNode(undefined, undefined);
70-
let tail = dummy; // 객체 참조 복사! 즉, dummy가 가리키는 객체를 tail도 가리키게 (참조 복사) 됨!
54+
// /**
55+
// 계획
56+
// 1. ListNode -> Array로 바꾸는 함수 생성
57+
// 2. const headArray는 head를 Array로 바꾼 값
58+
// 3. const reversedArray는 headArray를 reverse한 배열
59+
// 4. const result는 reversedArray를 ListNode로 바꾼 값
60+
// 5. return result
61+
// */
7162

72-
for (const item of arr) {
73-
tail.next = new ListNode(item, null);
74-
tail = tail.next;
75-
}
63+
// // ListNode를 Array로 바꿔주는 함수
64+
// const getToArray = (listNode) => {
65+
// const tempArray = [];
66+
// let cur = listNode; // 객체 참조 복사!
7667

77-
return dummy.next;
78-
}
68+
// while (cur !== null) {
69+
// tempArray.push(cur.val);
70+
// cur = cur.next;
71+
// }
72+
// return tempArray;
73+
// }
7974

80-
const headArray = getToArray(head);
81-
const reversedArray = getReversedArray(headArray);
82-
const result = getToListNode(reversedArray);
75+
// const getReversedArray = (arr) => {
8376

84-
return result;
77+
// const reversedArray = [...arr].reverse();
78+
79+
// return reversedArray;
80+
// }
81+
82+
// const getToListNode = (arr) => {
83+
// const dummy = new ListNode(undefined, undefined);
84+
// let tail = dummy; // 객체 참조 복사! 즉, dummy가 가리키는 객체를 tail도 가리키게 (참조 복사) 됨!
85+
86+
// for (const item of arr) {
87+
// tail.next = new ListNode(item, null);
88+
// tail = tail.next;
89+
// }
90+
91+
// return dummy.next;
92+
// }
93+
94+
// const headArray = getToArray(head);
95+
// const reversedArray = getReversedArray(headArray);
96+
// const result = getToListNode(reversedArray);
97+
98+
// return result;
99+
100+
// };
85101

86-
};

0 commit comments

Comments
 (0)