Skip to content

Commit 7d5856d

Browse files
committed
添加(0234.回文链表.md):增加typescript版本
1 parent 9c32528 commit 7d5856d

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

problems/0234.回文链表.md

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,7 @@ class Solution:
273273
return pre
274274
```
275275

276-
## Go
276+
### Go
277277

278278
```go
279279

@@ -319,6 +319,63 @@ var isPalindrome = function(head) {
319319
};
320320
```
321321

322+
### TypeScript
323+
324+
> 数组模拟
325+
326+
```typescript
327+
function isPalindrome(head: ListNode | null): boolean {
328+
const helperArr: number[] = [];
329+
let curNode: ListNode | null = head;
330+
while (curNode !== null) {
331+
helperArr.push(curNode.val);
332+
curNode = curNode.next;
333+
}
334+
let left: number = 0,
335+
right: number = helperArr.length - 1;
336+
while (left < right) {
337+
if (helperArr[left++] !== helperArr[right--]) return false;
338+
}
339+
return true;
340+
};
341+
```
342+
343+
> 反转后半部分链表
344+
345+
```typescript
346+
function isPalindrome(head: ListNode | null): boolean {
347+
if (head === null || head.next === null) return true;
348+
let fastNode: ListNode | null = head,
349+
slowNode: ListNode = head,
350+
preNode: ListNode = head;
351+
while (fastNode !== null && fastNode.next !== null) {
352+
preNode = slowNode;
353+
slowNode = slowNode.next!;
354+
fastNode = fastNode.next.next;
355+
}
356+
preNode.next = null;
357+
let cur1: ListNode | null = head;
358+
let cur2: ListNode | null = reverseList(slowNode);
359+
while (cur1 !== null) {
360+
if (cur1.val !== cur2!.val) return false;
361+
cur1 = cur1.next;
362+
cur2 = cur2!.next;
363+
}
364+
return true;
365+
};
366+
function reverseList(head: ListNode | null): ListNode | null {
367+
let curNode: ListNode | null = head,
368+
preNode: ListNode | null = null;
369+
while (curNode !== null) {
370+
let tempNode: ListNode | null = curNode.next;
371+
curNode.next = preNode;
372+
preNode = curNode;
373+
curNode = tempNode;
374+
}
375+
return preNode;
376+
}
377+
```
378+
322379

323380

324381
-----------------------

0 commit comments

Comments
 (0)