개발 공부/알고리즘 문제 풀이

[LeetCode] 19. Remove Nth Node From End of List

종범2 2021. 6. 24. 15:25

문제

LeetCode 19. Remove Nth Node From End of List

https://leetcode.com/problems/remove-nth-node-from-end-of-list/

 

Remove Nth Node From End of List - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

언어

자바스크립트(JavaScript)

 

접근 방법

  1. 모든 node의 값을 저장한다.
  2. 저장한 값을 이용하여 다시 ListNode를 만드는데, 특정 요소는 제외한다.

코드

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @param {number} n
 * @return {ListNode}
 */
var removeNthFromEnd = function(head, n) {
    // 요소 저장
    let numList = [];
    let node = head;
    while(node){
        numList.push(node.val);
        node = node.next;
    }
    // 저장된 요소로 새로운 ListNode 만들기
    let result = null;
    let cnt = 1;
    while(numList.length){
        let val = numList.pop();
        if(cnt !== n){
             result = new ListNode(val, result);   
        }
        cnt++;
    }
    return result;
};

결과

Runtime: 80 ms, faster than 81.71% of JavaScript online submissions for Remove Nth Node From End of List.

Memory Usage: 40.3 MB, less than 41.07% of JavaScript online submissions for Remove Nth Node From End of List.

복기

  1. 어렵지 않게 풀 수 있었다.
  2. 이전에 NodeList 값 탐색하고, NodeList를 만들어본 코드를 짠 적이 있었기 때문에 쉬웠다. 처음이라면 어렵다.