[LeetCode] Palindrome Linked List

준규·2022년 10월 3일
0

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을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글