Skip to content

Commit 581e476

Browse files
committed
❌ [143] a1
1 parent 2eac66f commit 581e476

File tree

2 files changed

+166
-0
lines changed

2 files changed

+166
-0
lines changed

143/my_solution.js

+117
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
// Reorder List
2+
3+
/**
4+
* Definition for singly-linked list.
5+
* function ListNode(val, next) {
6+
* this.val = (val===undefined ? 0 : val)
7+
* this.next = (next===undefined ? null : next)
8+
* }
9+
*/
10+
class ListNode {
11+
constructor(val, next) {
12+
this.val = (val === undefined ? 0 : val);
13+
this.next = (next === undefined ? null : next);
14+
}
15+
}
16+
17+
/**
18+
* @param {ListNode} head
19+
* @return {void} Do not return anything, modify head in-place instead.
20+
*/
21+
const reorderList = (head) => {
22+
// let slow = head, fast = head.next;//, reversed = new ListNode(), dummy = new ListNode(), result = dummy;
23+
// while (fast && fast.next) {
24+
// slow = slow.next
25+
// fast = fast.next.next;
26+
// }
27+
//
28+
// console.log("slow")
29+
// console.log(slow)
30+
// console.log("fast")
31+
// console.log(fast)
32+
33+
let slow = head, fast = head, counter = head, reversed = new ListNode(), dummy = new ListNode(), result = dummy;
34+
35+
// console.log("fast")
36+
// console.log(fast)
37+
38+
// let count = 0;
39+
// while (counter.next) {
40+
// count++;
41+
// counter = counter.next;
42+
// }
43+
44+
// while (count > 0) {
45+
// reversed.next = new ListNode(fast.val, reversed.next);
46+
// fast = fast.next;
47+
// }
48+
49+
console.log("slow")
50+
console.log(slow)
51+
reversed = reversed.next;
52+
console.log("reversed")
53+
console.log(reversed)
54+
console.log("count: " + count)
55+
56+
while (slow || reversed) {
57+
// console.log(`-> slow:${slow.val} & reversed:${reversed.val}`)
58+
// when reversed is null (on case of 3 linked list only), or same values.
59+
if ((null === reversed) || (reversed && (slow.val === reversed.val))) {
60+
// if (slow.val === reversed.val) {
61+
console.log('------------------> FOUnd same')
62+
console.log(dummy)
63+
slow.next = null;
64+
dummy.next = slow;
65+
slow = null;
66+
reversed = null;
67+
} else {
68+
// dummy.next = new ListNode(slow.val, reversed);
69+
dummy.next = slow;
70+
slow = slow.next;
71+
dummy = dummy.next;
72+
73+
dummy.next = reversed;
74+
reversed = reversed.next;
75+
dummy = dummy.next;
76+
77+
console.log("---> dummy")
78+
console.log(dummy)
79+
}
80+
81+
}
82+
result = result.next
83+
console.log("result")
84+
console.log(result)
85+
while (result) {
86+
console.log("check")
87+
console.log(result.val)
88+
result = result.next;
89+
}
90+
};
91+
92+
93+
94+
// reorderList(
95+
// new ListNode(1,
96+
// new ListNode(2,
97+
// new ListNode(3,
98+
// new ListNode(4))
99+
// )
100+
// )
101+
// )
102+
103+
// reorderList(
104+
// new ListNode(1,
105+
// new ListNode(2,
106+
// new ListNode(3)
107+
// )
108+
// )
109+
// )
110+
111+
112+
reorderList(
113+
new ListNode(1,
114+
new ListNode(2,
115+
new ListNode(3,
116+
new ListNode(4,
117+
new ListNode(5))))))

143/solution.js

+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Reorder List
2+
3+
/**
4+
* Definition for singly-linked list.
5+
* function ListNode(val, next) {
6+
* this.val = (val===undefined ? 0 : val)
7+
* this.next = (next===undefined ? null : next)
8+
* }
9+
*/
10+
class ListNode {
11+
constructor(val, next) {
12+
this.val = (val === undefined ? 0 : val);
13+
this.next = (next === undefined ? null : next);
14+
}
15+
}
16+
17+
/**
18+
* @param {ListNode} head
19+
* @return {void} Do not return anything, modify head in-place instead.
20+
*/
21+
const reorderList = (head) => {
22+
if (null === head.next) return head;
23+
let slow = head, fast = head.next.next, reversed = new ListNode(), dummy = new ListNode(), result = dummy;
24+
25+
while (fast) {
26+
reversed.next = new ListNode(fast.val, reversed.next);
27+
fast = fast.next;
28+
}
29+
30+
reversed = reversed.next;
31+
32+
while (slow && reversed) {
33+
if (slow.val === reversed.val) {
34+
dummy.next = reversed;
35+
slow = null;
36+
reversed = null;
37+
} else {
38+
dummy.next = slow;
39+
slow = slow.next;
40+
dummy = dummy.next;
41+
42+
dummy.next = reversed;
43+
reversed = reversed.next;
44+
dummy = dummy.next;
45+
}
46+
47+
}
48+
head = result.next;
49+
};

0 commit comments

Comments
 (0)