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+ /**
2+ * Definition for singly-linked list.
3+ * function ListNode(val, next) {
4+ * this.val = (val===undefined ? 0 : val)
5+ * this.next = (next===undefined ? null : next)
6+ * }
7+ */
8+ /**
9+ * @param {ListNode } head
10+ * @return {void } Do not return anything, modify head in-place instead.
11+ */
12+ var reorderList = function ( head ) {
13+ if ( ! head || ! head . next ) return ;
14+
15+ // 1. 중간 지점 찾기 (slow, fast 포인터 사용)
16+ let slow = head ;
17+ let fast = head ;
18+ while ( fast . next && fast . next . next ) {
19+ slow = slow . next ;
20+ fast = fast . next . next ;
21+ }
22+
23+ // 2. 중간 이후 리스트 뒤집기
24+ let prev = null ;
25+ let curr = slow . next ;
26+ while ( curr ) {
27+ let nextTemp = curr . next ;
28+ curr . next = prev ;
29+ prev = curr ;
30+ curr = nextTemp ;
31+ }
32+ // 중간 지점 이후는 끊기
33+ slow . next = null ;
34+
35+ // 3. 앞쪽 리스트와 뒤쪽 리스트 교차 병합
36+ let first = head ;
37+ let second = prev ;
38+ while ( second ) {
39+ let tmp1 = first . next ;
40+ let tmp2 = second . next ;
41+
42+ first . next = second ;
43+ second . next = tmp1 ;
44+
45+ first = tmp1 ;
46+ second = tmp2 ;
47+ }
48+ } ;
You can’t perform that action at this time.
0 commit comments