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