Skip to content

Commit 5b0b3da

Browse files
committed
添加(0019.删除链表的倒数第N个节点.md):typescript版本增加新解法
1 parent 0d2aacb commit 5b0b3da

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

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

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,8 @@ var removeNthFromEnd = function(head, n) {
183183
```
184184
TypeScript:
185185

186+
版本一(快慢指针法):
187+
186188
```typescript
187189
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
188190
let newHead: ListNode | null = new ListNode(0, head);
@@ -200,6 +202,48 @@ function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
200202
};
201203
```
202204

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+
203247
Kotlin:
204248

205249
```Kotlin

0 commit comments

Comments
 (0)