Appearance
234. 回文链表
原题链接:LeetCode 234. 回文链表
题目描述
给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。
示例 1:
**输入:**head = [1,2,2,1] **输出:**true
示例 2:
**输入:**head = [1,2] **输出:**false
提示:
链表中节点数目在范围[1, 105] 内
- `0 <= Node.val <= 9`
**进阶:**你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?
难度: Easy
题解代码
javascript
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {boolean}
*/
var isPalindrome = function(head) {
const arr = []
let p = head
while (p) {
arr.push(p.val)
p = p.next
}
// return arr.join('') === arr.reverse().join('')
let left = 0, right = arr.length - 1
while (arr[left] === arr[right] && right >= left) {
left++
right--
}
return left === right + 2 || left === right + 1
};