single 링크드리스트의 head가 주어질 때 이 단일 리스트가 palindrome인지 판별하는 문제이다
Example을 보자
1번 예시와 같이 중앙을 기준으로 대칭이면 true , 2번 예시와 같이 대칭이 아니면 false를 리턴하면 된다
const isPalindrome = function(head) {
let array = []
const pushVal = (node) => {
if(node) {
array.push(node.val);
pushVal(node.next);
}
}
pushVal(head);
while(head) {
if(head.val !== array.pop()) return false;
head = head.next;
}
return true;
};
단일 리스트의 값들을 원래 순서와 반대로 원본 리스트 값들과 비교를 하기 위해 배열을 하나 만들어서 node 의 val 값을 넣어주었다
그 다음 원본 리스트의 값들과 배열의 값을 반대 방향으로 비교를 하여 값이 틀리는 순간 false를 리턴하고 for 문을 돌 동안 리턴되지 않으면 palindrome 인 것이므로 true를 리턴해주었다
submit을 해보니
정답이었다!