본문 바로가기
Web development/Algorithm

[LeetCode] Remove Nth Node from End of List (javascript)

by 자몬다 2021. 2. 26.

뒤에서 n번째 노드 삭제하기.

우선 리스트 길이를 구한 후 삭제할 노드의 인덱스에 다다르면 삭제하는 방법으로 풀었다.

 

/**
 * 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) {
    var curr = head;
    var prev, index = 0;
    
    // ListNode의 길이 구하기
    var list = head;
    var len = 1;
    while(list.next){
        len++;
        list = list.next;
    }
    
    if(n == len) {
        head = curr.next;
    } else {
        while(index++ < len - n){
            prev = curr;
            curr = prev.next;
            console.log(prev, curr)
        }
        prev.next = curr.next;
        console.log('result', prev, curr, head)
    }
    curr.next = undefined;
    
    return head;
};

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

댓글