(LeetCode)[JS] #206

2900 단어 leetcodeleetcode

206. Reverse Linked List

Number : 206
Difficulty : Easy
Related Topics : Linked List , Recursion
Language : JS
https://leetcode.com/problems/reverse-linked-list/

나열된 링크의 순서를 반대로 뒤집어라.

링크드 리스트에서 가장 빈출되기 쉬운 뒤집기 문제다.
재귀문제로도 많이 나오기 때문이 암기를 하는 수준이 되어야 하고
문제 풀이 과정을 남에게 설명도 할 줄 알아야 한다.


(2022-01-15) self try 1

// self try 1
var reverseList = function (head) {
    let first = head;
    let second = null; // 1
    while (first) { // 5
        let holding = first.next; // 2
        first.next = second; // 3
        second = first; 
        first = holding; //4
    }
    return second; // 새로운 링크의 head
};

1. 처음 시작때 변수를 2개 선언해준다. first(Node(1)) , second(뒤집을때 Node(1).next가 null이 되어야 하니까)
2.재귀를 이용해서 계속 오른쪽으로 연산해나가야 되기 때문에 변수 holding을 잡아준다. first.next인 Node(2)
3.화살표의 방향을 바꿔준다. 처음에는 Node(1)에서 Node(2)로 향하던 화살표가 Null로 향하게 된다.
4.이제 한칸씩 밀어주면 되겠다. 다하고 나면 first가 Node(2) second가 Node(3)이 된다.
5.이를 언제까지 반복하느냐? first가 Node(6)일때 마지막으로 하면 되니까 while(first)를 조건으로 사용하면 된다.

좋은 웹페이지 즐겨찾기