问题描述
LeetCode 234. 回文链表 (opens in a new tab),难度简单。
给你一个单链表的头节点 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)
空间复杂度解决此题?
题解
暴力
解题思路:直接链表转数组,然后双指针比较。
Solution.java
class Solution {
public boolean isPalindrome(ListNode head) {
// 链表转数组
List<Integer> list = new ArrayList<>();
while (head != null) {
list.add(head.val);
head = head.next;
}
// 双指针比较
int left = 0;
int right = list.size() - 1;
while (left <= right) {
if (list.get(left) != list.get(right)) {
return false;
}
left++;
right--;
}
return true;
}
}