Merge branch 'youngyangyang04:master' into master

This commit is contained in:
Ezralin
2022-07-11 09:03:11 +08:00
committed by GitHub
2 changed files with 71 additions and 15 deletions

View File

@ -254,20 +254,19 @@ TypeScript
```typescript ```typescript
function swapPairs(head: ListNode | null): ListNode | null { function swapPairs(head: ListNode | null): ListNode | null {
const dummyHead: ListNode = new ListNode(0, head); const dummyNode: ListNode = new ListNode(0, head);
let cur: ListNode = dummyHead; let curNode: ListNode | null = dummyNode;
while(cur.next !== null && cur.next.next !== null) { while (curNode && curNode.next && curNode.next.next) {
const tem: ListNode = cur.next; let firstNode: ListNode = curNode.next,
const tem1: ListNode = cur.next.next.next; secNode: ListNode = curNode.next.next,
thirdNode: ListNode | null = curNode.next.next.next;
cur.next = cur.next.next; // step 1 curNode.next = secNode;
cur.next.next = tem; // step 2 secNode.next = firstNode;
cur.next.next.next = tem1; // step 3 firstNode.next = thirdNode;
curNode = firstNode;
cur = cur.next.next; }
} return dummyNode.next;
return dummyHead.next; };
}
``` ```
Kotlin: Kotlin:

View File

@ -273,7 +273,7 @@ class Solution:
return pre return pre
``` ```
## Go ### Go
```go ```go
@ -319,6 +319,63 @@ var isPalindrome = function(head) {
}; };
``` ```
### TypeScript
> 数组模拟
```typescript
function isPalindrome(head: ListNode | null): boolean {
const helperArr: number[] = [];
let curNode: ListNode | null = head;
while (curNode !== null) {
helperArr.push(curNode.val);
curNode = curNode.next;
}
let left: number = 0,
right: number = helperArr.length - 1;
while (left < right) {
if (helperArr[left++] !== helperArr[right--]) return false;
}
return true;
};
```
> 反转后半部分链表
```typescript
function isPalindrome(head: ListNode | null): boolean {
if (head === null || head.next === null) return true;
let fastNode: ListNode | null = head,
slowNode: ListNode = head,
preNode: ListNode = head;
while (fastNode !== null && fastNode.next !== null) {
preNode = slowNode;
slowNode = slowNode.next!;
fastNode = fastNode.next.next;
}
preNode.next = null;
let cur1: ListNode | null = head;
let cur2: ListNode | null = reverseList(slowNode);
while (cur1 !== null) {
if (cur1.val !== cur2!.val) return false;
cur1 = cur1.next;
cur2 = cur2!.next;
}
return true;
};
function reverseList(head: ListNode | null): ListNode | null {
let curNode: ListNode | null = head,
preNode: ListNode | null = null;
while (curNode !== null) {
let tempNode: ListNode | null = curNode.next;
curNode.next = preNode;
preNode = curNode;
curNode = tempNode;
}
return preNode;
}
```
----------------------- -----------------------