Skip to content

Commit 018a2de

Browse files
committed
feat: 19. Remove Nth Node From End of List
1 parent 35459a3 commit 018a2de

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// Time complexity: O(n)
2+
// Space complexity: O(1)
3+
4+
/**
5+
* Definition for singly-linked list.
6+
* function ListNode(val, next) {
7+
* this.val = (val===undefined ? 0 : val)
8+
* this.next = (next===undefined ? null : next)
9+
* }
10+
*/
11+
/**
12+
* @param {ListNode} head
13+
* @param {number} n
14+
* @return {ListNode}
15+
*/
16+
var removeNthFromEnd = function (head, n) {
17+
const reverse = (head) => {
18+
let next = null;
19+
let current = head;
20+
21+
while (current) {
22+
const temp = current.next;
23+
current.next = next;
24+
next = current;
25+
current = temp;
26+
}
27+
28+
return next;
29+
};
30+
31+
// Reverse
32+
let reversedHead = reverse(head);
33+
34+
if (n === 1) {
35+
reversedHead = reversedHead.next;
36+
} else {
37+
let prev = null;
38+
let current = reversedHead;
39+
40+
for (let i = 1; i < n; i++) {
41+
prev = current;
42+
current = current.next;
43+
}
44+
45+
prev.next = current.next;
46+
}
47+
48+
// Reverse Again
49+
return reverse(reversedHead);
50+
};

0 commit comments

Comments
 (0)