[LeetCode] Palindrome Linked List

아르당·2025년 11월 6일

LeetCode

목록 보기
59/68
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

단일 연결 리스트인 head가 주어졌을 때, 팰린드롬이면 true, 그렇지 않으면 false를 반환해라.

Example

#1

Input: head = [1, 2, 2, 1]
Output: true

#2

Input: head = [1, 2]
Output: false

Constraints

  • 리스트에 노드의 숫자는 1, 10^5 범위에 있다.
  • 0 <= Node.val <= 9

Solved

/**
 * Definition for singly-linked list.
 * 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; }
 * }
 */
class Solution {
    public boolean isPalindrome(ListNode head) {
        List<Integer> arr = new ArrayList<>();

        while(head != null){
            arr.add(head.val);
            head = head.next;
        }

        int left = 0;
        int right = arr.size() - 1;

        while(left < right){
            if(!arr.get(left).equals(arr.get(right))) return false;

            left++;
            right--;
        }

        return true;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글