문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
단일 연결 리스트인 head가 주어졌을 때, 팰린드롬이면 true, 그렇지 않으면 false를 반환해라.
#1
Input: head = [1, 2, 2, 1]
Output: true
#2
Input: head = [1, 2]
Output: false
/**
* 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;
}
}