본문 바로가기
Coding Test/LeetCode

[Javascript] (LeetCode) 206. Reverse Linked List (Easy)

by Chaedie 2022. 8. 8.
728x90

[Javascript] (LeetCode) 206. Reverse Linked List (Easy)

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

/**
 * 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 {ListNode}
 */
var reverseList = function(head) {

  if (head === null || head.next === null) {
    return head;
  }

  const result = reverseList(head.next);

  head.next.next = head;
  head.next = null;

  return result;  
};
  • 1) 아이디어상으론 head.next를 통해 끝까지 가서 차례대로 하나씩 돌리면 되겠다고 생각했습니다.
  • 2) 그런데!! 이전 노드를 선택하는 방법을 전혀 모르겠더라구요. 그래서 결국 다른 사람들 풀이를 공부했습니다.
  • 3) 릿코드상 인기많은 풀이는 제가 생각한 아이디어는 아니고 좀더 신박한 아이디어로 처음부터 돌리면서 끝까지 나아가는 아이디어였습니다.
  • 4) 그래서 구글링을 통해 아래 링크들로 재귀함수를 이용하는 방법을 찾았습니다.
  • 5) 재귀함수를 이용하면 재귀를 빠져나오면 이전 head가 스콥에 남아있기 때문에 돌아가서 선택하는 것과 같은 형태가 됩니다.
  • 6) 이를 이용해서 뒤에서부터 차례대로 방향을 바꿀수 있었습니다.
  • https://underdog11.tistory.com/78
    https://bcp0109.tistory.com/142

배운 점, 느낀 점

  • 재귀함수를 잘 모르는데 공부를 해봐야겠다.
  • 하노이탑 이해안되서 포기했었는데 다시 해봐야겠다.

댓글