← Linked Lists

Palindrome Linked List

Easy
Python
def is_palindrome(head):
    vals=[]
    while head: vals.append(head.val); head=head.next
    return vals==vals[::-1]
Java
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;
}

Key Insight

Python slicing one-liner. Java uses two pointers.

Python → Java Differences

  • vals==vals[::-1] one-liner
  • Java two pointers
  • .equals() for Integer
Python
def is_palindrome(head):
    vals=[]
    while head: vals.append(head.val); head=head.next
    return vals==vals[::-1]
Java
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;
}

Algorithm Steps

1. Collect values
2. Check palindrome