方法一 双指针(为什么链表可以用双指针 可以将链表转化为数组 然后求解)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public boolean isPalindrome(ListNode head) {
//采用双指针的方式解决
//将链表的元素放进集合中
ListNode node = head;
List<Integer> list = new ArrayList<>();
while(node != null) {
list.add(node.val);
node = node.next;
}
//创建两个指针
int l = 0;
int r = list.size() - 1;
while(l < r) {
if(!list.get(l).equals(list.get(r))) {//此处不能直接用等号 Integer是引用类型
return false;
}else {
l++;
r--;
}
}
return true;
}
}