66
66
class Solution :
67
67
def removeNthFromEnd (self , head : ListNode, n : int ) -> ListNode:
68
68
dummy = ListNode(next = head)
69
- p = q = dummy
70
- for i in range (n):
71
- p = p .next
72
- while p .next:
73
- p, q = p .next, q .next
74
- q .next = q .next.next
69
+ fast = slow = dummy
70
+ for _ in range (n):
71
+ fast = fast .next
72
+ while fast .next:
73
+ slow, fast = slow .next, fast .next
74
+ slow .next = slow .next.next
75
75
return dummy.next
76
76
```
77
77
@@ -93,15 +93,15 @@ class Solution:
93
93
class Solution {
94
94
public ListNode removeNthFromEnd (ListNode head , int n ) {
95
95
ListNode dummy = new ListNode (0 , head);
96
- ListNode p = dummy, q = dummy;
96
+ ListNode fast = dummy, slow = dummy;
97
97
while (n-- > 0 ) {
98
- p = p . next;
98
+ fast = fast . next;
99
99
}
100
- while (p . next != null ) {
101
- p = p . next;
102
- q = q . next;
100
+ while (fast . next != null ) {
101
+ slow = slow . next;
102
+ fast = fast . next;
103
103
}
104
- q . next = q . next. next;
104
+ slow . next = slow . next. next;
105
105
return dummy. next;
106
106
}
107
107
}
@@ -124,16 +124,16 @@ class Solution {
124
124
public:
125
125
ListNode* removeNthFromEnd(ListNode* head, int n) {
126
126
ListNode* dummy = new ListNode(0, head);
127
- ListNode* p = dummy;
128
- ListNode* q = dummy;
129
- while (n-- > 0 ) {
130
- p = p ->next;
127
+ ListNode* fast = dummy;
128
+ ListNode* slow = dummy;
129
+ while (n--) {
130
+ fast = fast ->next;
131
131
}
132
- while (p ->next != nullptr ) {
133
- p = p ->next;
134
- q = q ->next;
132
+ while (fast ->next) {
133
+ slow = slow ->next;
134
+ fast = fast ->next;
135
135
}
136
- q ->next = q ->next->next;
136
+ slow ->next = slow ->next->next;
137
137
return dummy->next;
138
138
}
139
139
};
@@ -150,22 +150,82 @@ public:
150
150
* }
151
151
*/
152
152
func removeNthFromEnd(head *ListNode, n int) *ListNode {
153
- dummy := &ListNode{Val: 0, Next: head}
154
- p := dummy
155
- q := dummy
153
+ dummy := &ListNode{0, head}
154
+ fast := dummy
155
+ slow := dummy
156
156
for n > 0 {
157
- p = p .Next
158
- n--
157
+ fast = fast .Next
158
+ n -= 1
159
159
}
160
- for p .Next != nil {
161
- p = p .Next
162
- q = q .Next
160
+ for fast .Next != nil {
161
+ slow = slow .Next
162
+ fast = fast .Next
163
163
}
164
- q .Next = q .Next.Next
164
+ slow .Next = slow .Next.Next
165
165
return dummy.Next
166
166
}
167
167
```
168
168
169
+ ### ** JavaScript**
170
+
171
+ ``` js
172
+ /**
173
+ * Definition for singly-linked list.
174
+ * function ListNode(val, next) {
175
+ * this.val = (val===undefined ? 0 : val)
176
+ * this.next = (next===undefined ? null : next)
177
+ * }
178
+ */
179
+ /**
180
+ * @param {ListNode} head
181
+ * @param {number} n
182
+ * @return {ListNode}
183
+ */
184
+ var removeNthFromEnd = function (head , n ) {
185
+ const dummy = new ListNode (0 , head);
186
+ let fast = dummy, slow = dummy;
187
+ while (n-- ) {
188
+ fast = fast .next ;
189
+ }
190
+ while (fast .next ) {
191
+ slow = slow .next ;
192
+ fast = fast .next ;
193
+ }
194
+ slow .next = slow .next .next ;
195
+ return dummy .next ;
196
+ };
197
+ ```
198
+
199
+ ### ** Ruby**
200
+
201
+ ``` rb
202
+ # Definition for singly-linked list.
203
+ # class ListNode
204
+ # attr_accessor :val, :next
205
+ # def initialize(val = 0, _next = nil)
206
+ # @val = val
207
+ # @next = _next
208
+ # end
209
+ # end
210
+ # @ param {ListNode} head
211
+ # @ param {Integer} n
212
+ # @ return {ListNode}
213
+ def remove_nth_from_end (head , n )
214
+ dummy = ListNode .new (0 , head)
215
+ fast = slow = dummy
216
+ while n > 0
217
+ fast = fast.next
218
+ n -= 1
219
+ end
220
+ while fast.next
221
+ slow = slow.next
222
+ fast = fast.next
223
+ end
224
+ slow.next = slow.next.next
225
+ return dummy.next
226
+ end
227
+ ```
228
+
169
229
### ** ...**
170
230
171
231
```
0 commit comments