역 단일 연결 목록

3822 단어 leetcodejavascript
재귀 1

var reverseList = function (head) {
  let previous;
  return reverse(head, (previous = null));
};

const reverse = (head, previous) => {
  if (head === null) {
    return previous;
  }
  let next = head.next;
  head.next = previous;
  return reverse(next, head);
};


재귀 2
아래 솔루션의 핵심
-- 마침내 우리는 헤드 참조가 필요하고 head.next와 head의 다음이 이제 헤드가 될 수 있다는 것을 알기 위해 그것을 head에 연결해야 합니다.

var reverseList = function(head) {

const reverseR = (head) => {
   if (head === null || head.next === null) {
    return head;
  }
  let last = reverseR(head.next);
  const rest_tail = head.next;
  rest_tail.next = head;
  head.next = null;
  return last;
}
return reverseR(head);

}


반복적 인

var reverseList = function (head) {
  let current = head;
  let previous = null;

  while (current !== null) {
    const tempNode = current.next;
    current.next = previous;
    previous = current;
    current = tempNode;
  }
  return previous;
};

좋은 웹페이지 즐겨찾기