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

原方法编译时发现对节点类型缺少断言。
This commit is contained in:
Jack_ZhijieFang
2022-08-07 02:11:01 +08:00
committed by GitHub
parent 7e4d210129
commit 5868d5ec6d

View File

@ -188,18 +188,20 @@ TypeScript:
```typescript ```typescript
function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null { function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
let newHead: ListNode | null = new ListNode(0, head); let newHead: ListNode | null = new ListNode(0, head);
let slowNode: ListNode | null = newHead, //根据leetcode题目的定义可推断这里快慢指针均不需要定义为ListNode | null。
fastNode: ListNode | null = newHead; let slowNode: ListNode = newHead;
for (let i = 0; i < n; i++) { let fastNode: ListNode = newHead;
fastNode = fastNode.next;
while(n--) {
fastNode = fastNode.next!; //由虚拟头节点前进n个节点时,fastNode.next可推断不为null。
} }
while (fastNode.next) { while(fastNode.next) { //遍历直至fastNode.next = null 即尾部节点。 此时slowNode指向倒数第n个节点。
fastNode = fastNode.next; fastNode = fastNode.next;
slowNode = slowNode.next; slowNode = slowNode.next!;
} }
slowNode.next = slowNode.next.next; slowNode.next = slowNode.next!.next; //倒数第n个节点可推断其next节点不为空。
return newHead.next; return newHead.next;
}; }
``` ```
版本二(计算节点总数法): 版本二(计算节点总数法):