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 };

浙公网安备 33010602011771号