연결리스트가 펠린드롬인지 확인하는 문제다.
배열로 변환하는 꼼수를 써서 풀었으므로.. 좀 더 문제의 의도에 맞는 풀이를 생각해 봐야겠다.
/**
* 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/
'Web development > Algorithm' 카테고리의 다른 글
[LeetCode] 17. Letter Combinations of a Phone Number (javascript) (0) | 2021.05.31 |
---|---|
[LeetCode] ZigZag Conversion (javascript) (0) | 2021.05.19 |
[LeetCode] Merge Two Sorted Lists (javascript) (0) | 2021.02.26 |
[LeetCode] Reverse Linked List (javascript) (0) | 2021.02.26 |
[LeetCode] Remove Nth Node from End of List (javascript) (0) | 2021.02.26 |
댓글