From af7c5dc109643a9d8ff0b06624e181ca7d0b7e36 Mon Sep 17 00:00:00 2001 From: reeseo3o Date: Sat, 18 Apr 2026 13:48:59 +0900 Subject: [PATCH] week7: reverse-linked-list --- reverse-linked-list/reeseo3o.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 reverse-linked-list/reeseo3o.js diff --git a/reverse-linked-list/reeseo3o.js b/reverse-linked-list/reeseo3o.js new file mode 100644 index 0000000000..4686b9fd54 --- /dev/null +++ b/reverse-linked-list/reeseo3o.js @@ -0,0 +1,28 @@ +// Time Complexity: O(n) - 노드를 한 번만 순회 +// Space Complexity: O(1) - 변수 3개(prev, current, next)만 사용 +const reverseList = (head) => { + let prev = null; + let current = head; + + while (current !== null) { + const next = current.next; + current.next = prev; + prev = current; + current = next; + } + + return prev; +}; + +// Time Complexity: O(n) - 노드 수만큼 재귀 호출 +// Space Complexity: O(n) - 콜 스택이 노드 수만큼 쌓임 +const reverseListRecursive = (head) => { + if (head === null || head.next === null) return head; + + const newHead = reverseListRecursive(head.next); + + head.next.next = head; + head.next = null; + + return newHead; +};