본문 바로가기
Web development/Algorithm

[LeetCode] Palindrome Linked List (javascript)

by 자몬다 2021. 2. 26.

연결리스트가 펠린드롬인지 확인하는 문제다.

 

배열로 변환하는 꼼수를 써서 풀었으므로.. 좀 더 문제의 의도에 맞는 풀이를 생각해 봐야겠다.

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {boolean}
 */
var isPalindrome = function(head) {
    // 꼼수 풀이긴 하다...   
    // 배열로 변환한다.
    const arr = toArray(head);
    // 0개, 1개인 경우 무조건 펠린드롬임
    if(arr.length < 2) return true;
    
    while(arr.length > 1){
        const popped = arr.pop();
        const shifted = arr.shift();
        console.log(popped, shifted)
        if(popped !== shifted) return false;
    }
    return true;
};
const toArray = (list) => {
    const arr = [];
    while(list) {
        arr.push(list.val);
        list = list.next;
    }
    return arr;
}

 

leetcode.com/explore/interview/card/top-interview-questions-easy/93/linked-list/772/

댓글