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