def is_palindrome(head):
vals=[]
while head: vals.append(head.val); head=head.next
return vals==vals[::-1]
public boolean isPalindrome(ListNode head){
List<Integer> vals=new ArrayList<>();
while(head!=null){vals.add(head.val);head=head.next;}
int l=0,r=vals.size()-1;
while(l<r) if(!vals.get(l++).equals(vals.get(r--))) return false;
return true;
}
Python slicing one-liner. Java uses two pointers.
def is_palindrome(head):
vals=[]
while head: vals.append(head.val); head=head.next
return vals==vals[::-1]
public boolean isPalindrome(ListNode head){
List<Integer> vals=new ArrayList<>();
while(head!=null){vals.add(head.val);head=head.next;}
int l=0,r=vals.size()-1;
while(l<r) if(!vals.get(l++).equals(vals.get(r--))) return false;
return true;
}
1. Collect values 2. Check palindrome