错误解法一:正序查找的过程中,将前面的元素倒叙插入inverse链中,找到偶数中点时,对称查找。
class Solution {public boolean isPalindrome(ListNode head) {if(head.next == null){return true;}ListNode inverse=null, find=head;while(find != null){ListNode temp=find.next;find.next = inverse;inverse = find;find = temp;while(find != null && inverse != null && find.val == inverse.val){find = find.next;inverse = inverse.next;}}if(find==null && inverse==null ){return true;}return false;}
}
错误原因:没有考虑奇数情况

解法一:将数据转存到列表中,用双指针比较。
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,right=list.size()-1;while(left<right){if(list.get(left)!=list.get(right)){return false;}right--;left++;}return true;}
}