Skip to content

Commit 6ea6956

Browse files
Merge pull request youngyangyang04#1008 from xiaofei-2020/ts5
添加(0019.删除链表的倒数第N个节点.md):增加typescript版本
2 parents 307dd48 + 5b0b3da commit 6ea6956

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

problems/0019.删除链表的倒数第N个节点.md

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,71 @@ var removeNthFromEnd = function(head, n) {
181181
return ret.next;
182182
};
183183
```
184+
TypeScript:
185+
186+
版本一(快慢指针法):
187+
188+
```typescript
189+
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
190+
let newHead: ListNode | null = new ListNode(0, head);
191+
let slowNode: ListNode | null = newHead,
192+
fastNode: ListNode | null = newHead;
193+
for (let i = 0; i < n; i++) {
194+
fastNode = fastNode.next;
195+
}
196+
while (fastNode.next) {
197+
fastNode = fastNode.next;
198+
slowNode = slowNode.next;
199+
}
200+
slowNode.next = slowNode.next.next;
201+
return newHead.next;
202+
};
203+
```
204+
205+
版本二(计算节点总数法):
206+
207+
```typescript
208+
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
209+
let curNode: ListNode | null = head;
210+
let listSize: number = 0;
211+
while (curNode) {
212+
curNode = curNode.next;
213+
listSize++;
214+
}
215+
if (listSize === n) {
216+
head = head.next;
217+
} else {
218+
curNode = head;
219+
for (let i = 0; i < listSize - n - 1; i++) {
220+
curNode = curNode.next;
221+
}
222+
curNode.next = curNode.next.next;
223+
}
224+
return head;
225+
};
226+
```
227+
228+
版本三(递归倒退n法):
229+
230+
```typescript
231+
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
232+
let newHead: ListNode | null = new ListNode(0, head);
233+
let cnt = 0;
234+
function recur(node) {
235+
if (node === null) return;
236+
recur(node.next);
237+
cnt++;
238+
if (cnt === n + 1) {
239+
node.next = node.next.next;
240+
}
241+
}
242+
recur(newHead);
243+
return newHead.next;
244+
};
245+
```
246+
184247
Kotlin:
248+
185249
```Kotlin
186250
fun removeNthFromEnd(head: ListNode?, n: Int): ListNode? {
187251
val pre = ListNode(0).apply {

0 commit comments

Comments
 (0)