Merge pull request #1566 from laerpeeK/master

fix:链表理论基础.md
This commit is contained in:
程序员Carl
2022-08-19 09:18:06 +08:00
committed by GitHub
4 changed files with 17 additions and 11 deletions

View File

@ -493,6 +493,9 @@ function threeSum(nums: number[]): number[][] {
right: number = length - 1;
let resArr: number[][] = [];
for (let i = 0; i < length; i++) {
if (nums[i]>0) {
return resArr; //nums经过排序后只要nums[i]>0, 此后的nums[i] + nums[left] + nums[right]均大于0,可以提前终止循环。
}
if (i > 0 && nums[i] === nums[i - 1]) {
continue;
}

View File

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

View File

@ -385,7 +385,8 @@ function removeElements(head: ListNode | null, val: number): ListNode | null {
if (cur.val === val) {
pre.next = cur.next;
} else {
pre = pre.next;
//此处不加类型断言时编译器会认为pre类型为ListNode, pre.next类型为ListNode | null
pre = pre.next as ListNode;
}
cur = cur.next;
}

View File

@ -186,7 +186,7 @@ TypeScript:
```typescript
class ListNode {
public val: number;
public next: ListNode = null;
public next: ListNode|null = null;
constructor(value: number) {
this.val = value;
this.next = null;