mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-11 04:54:51 +08:00
Merge branch 'youngyangyang04:master' into master
This commit is contained in:
@ -254,20 +254,19 @@ TypeScript:
|
||||
|
||||
```typescript
|
||||
function swapPairs(head: ListNode | null): ListNode | null {
|
||||
const dummyHead: ListNode = new ListNode(0, head);
|
||||
let cur: ListNode = dummyHead;
|
||||
while(cur.next !== null && cur.next.next !== null) {
|
||||
const tem: ListNode = cur.next;
|
||||
const tem1: ListNode = cur.next.next.next;
|
||||
|
||||
cur.next = cur.next.next; // step 1
|
||||
cur.next.next = tem; // step 2
|
||||
cur.next.next.next = tem1; // step 3
|
||||
|
||||
cur = cur.next.next;
|
||||
}
|
||||
return dummyHead.next;
|
||||
}
|
||||
const dummyNode: ListNode = new ListNode(0, head);
|
||||
let curNode: ListNode | null = dummyNode;
|
||||
while (curNode && curNode.next && curNode.next.next) {
|
||||
let firstNode: ListNode = curNode.next,
|
||||
secNode: ListNode = curNode.next.next,
|
||||
thirdNode: ListNode | null = curNode.next.next.next;
|
||||
curNode.next = secNode;
|
||||
secNode.next = firstNode;
|
||||
firstNode.next = thirdNode;
|
||||
curNode = firstNode;
|
||||
}
|
||||
return dummyNode.next;
|
||||
};
|
||||
```
|
||||
|
||||
Kotlin:
|
||||
|
@ -273,7 +273,7 @@ class Solution:
|
||||
return pre
|
||||
```
|
||||
|
||||
## 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;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
-----------------------
|
||||
|
Reference in New Issue
Block a user