题目
输入: 1->2->2->1
输出: true
代码
class Solution {
public boolean isPalindrome(ListNode head) {
List<Integer> list = new ArrayList<>();
list.add(head.val);
if(head.next==null){
return true;
}
while(head.next!=null){
head=head.next;
list.add(head.val);
}
//偶数
if(list.size()%2==0){
int i = list.size()/2-1;
int j = list.size()/2;
while(i>=0&&j<=list.size()-1){
if(!list.get(i).equals(list.get(j))){
return false;
}
i--;j++;
}
return true;
}
//奇数
int i = list.size()/2-1;
int j = list.size()/2+1;
while(i>=0&&j<=list.size()-1){
if(!list.get(i).equals(list.get(j))){
return false;
}
i--;j++;
}
return true;
}
}
改进
上面的代码分奇数偶数的情况,看下官方的解答是使用双指针进行遍历