234.回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。

示例 1:

输入:head = [1,2,2,1]
输出:true

示例 2:
输入:head = [1,2]
输出:false

提示:

  • 链表中节点数目在范围[1, 105] 内
  • 0 <= Node.val <= 9

方法一:双指针

时间复杂度:O(n),n是链表的元素个数

空间复杂度:O(n)

 1 /**
 2  * Definitaion for singly-linked list.
 3  * function ListNode(val,next){
 4  * this.val=(val===undefined?0:val)
 5  * this.next=(next===undefined?null:next)
 6  * }
 7  */
 8 /**
 9  * @param {ListNode} head
10  * @param {boolean}
11  */
12 var isPalidrome = function(head) {
13     const vals = [];
14     while (head !== null) {
15         vals.push(head.val);
16         head = head.next;
17     }
18     for (let i = 0, j = vals.length; i < j; ++i, --j) {
19         if (vals[i] !== vals[j]) {
20             return false;
21         }
22     }
23     return true;
24 };

 

posted @ 2021-05-19 22:55  icyyyy  阅读(112)  评论(0)    收藏  举报