@@ -273,7 +273,7 @@ class Solution:
273
273
return pre
274
274
```
275
275
276
- ## Go
276
+ ### Go
277
277
278
278
``` go
279
279
@@ -319,6 +319,63 @@ var isPalindrome = function(head) {
319
319
};
320
320
```
321
321
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
+
322
379
323
380
324
381
-----------------------
0 commit comments