Palindrome Linked List - LeetCode

  1. 데크(Deque)를 이용한 풀이
  2. 러너를 활용한 풀이

하지만, 나는 러너 기법은 우선 어려운 것 같아 노드를 사용하는 기법으로 풀이를 학습함

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;
    }
}

public boolean isPalindrome(ListNode head) {
    Deque<Integer> deque = new LinkedList<>();

    ListNode node = head;
    while (node != null) {
        deque.add(node.val);
        node = node.next;
    }

    while(!deque.isEmpty() && deque.size() > 1) {
        if (deque.pollFirst() != deque.pollLast()) {
            return false;
        }
    }

    return true;
}