|
| 1 | +# Intuition |
| 2 | +nλ² μ§Έλ₯Ό μκΈ° μν΄ μ 보(λͺ λ²μ§Έμ μ΄λ€ μμκ° μλμ§)λ₯Ό μμμΌ νλ€. |
| 3 | +# Approach |
| 4 | +1. λ°°μ΄μ λ§ν¬λ 리μ€νΈ μ 보λ₯Ό λͺ¨λ λ£λλ€. |
| 5 | +2. 맨 μ μμλ₯Ό μ κ±°ν΄μΌνλ κ²½μ° (`len(nodes) == n`) ν€λμ λ€μμ λ°ννλ€. |
| 6 | +3. λ€μμ `n`λ²μ§Έ μμ(`len(nodes)-n`)μ μκ³Ό λ€λ₯Ό μ΄μ΄λΆμ¬ `n`λ²μ§Έ μμλ₯Ό μ κ±°νλ€. |
| 7 | +# Complexity |
| 8 | +- Time complexity: $O(n)$ |
| 9 | + - λ§ν¬λ 리μ€νΈμ κΈΈμ΄ `n`μ λνμ¬, μ΄λ₯Ό μννλ λΉμ©μ΄ λ°μνλ€. |
| 10 | +- Space complexity: $O(n)$ |
| 11 | + - λ§ν¬λ 리μ€νΈμ κΈΈμ΄ `n`μ λνμ¬, λ°°μ΄μ ν¬κΈ° `n`μ΄ λ°μνλ€. |
| 12 | + |
| 13 | +# Code |
| 14 | +## Array |
| 15 | +```go |
| 16 | +func removeNthFromEnd(head *ListNode, n int) *ListNode { |
| 17 | + nodes := make([]*ListNode, 0, 100) |
| 18 | + |
| 19 | + for curr := head; curr != nil; curr = curr.Next { |
| 20 | + nodes = append(nodes, curr) |
| 21 | + } |
| 22 | + |
| 23 | + if len(nodes) == n { |
| 24 | + return head.Next |
| 25 | + } |
| 26 | + |
| 27 | + nodes[len(nodes)-n-1].Next = nodes[len(nodes)-n].Next |
| 28 | + return head |
| 29 | +} |
| 30 | + |
| 31 | +``` |
| 32 | +# Intuition |
| 33 | +λ°°μ΄μ λͺ¨λ μμλ₯Ό μ μ₯ν νμλ μμ΄ λ³΄μλ€. κ³΅κ° λ³΅μ‘λλ₯Ό μ€μΌ λ°©λ²μ μμ보μλ€. |
| 34 | +# Approach |
| 35 | +λͺ¨λ μμκ° μλλΌ, `n`λ²μ§Έμ μ΄μ (`prev`), μ΄ν (`next`)λ§μ μ μ₯νκ² νμλ€. |
| 36 | +# Complexity |
| 37 | +- Time complexity: $O(n)$ |
| 38 | + - λ§ν¬λ 리μ€νΈμ κΈΈμ΄ `n`μ λνμ¬, μ΄λ₯Ό μννλ λΉμ©μ΄ λ°μνλ€. |
| 39 | +- Space complexity: $O(1)$ |
| 40 | + - 2κ°μ μμλ§ μ μ§νλ―λ‘, `O(1)`μ΄λ€. |
| 41 | + |
| 42 | +# Code |
| 43 | +## Two Pointer |
| 44 | +```go |
| 45 | +func removeNthFromEnd(head *ListNode, n int) *ListNode { |
| 46 | + len := 0 |
| 47 | + for curr := head; curr != nil; curr = curr.Next { |
| 48 | + len++ |
| 49 | + } |
| 50 | + |
| 51 | + if len == n { |
| 52 | + return head.Next |
| 53 | + } |
| 54 | + |
| 55 | + var prev, curr, next *ListNode |
| 56 | + curr = head |
| 57 | + next = head.Next |
| 58 | + for i := 0; i+n < len; i++ { |
| 59 | + prev = curr |
| 60 | + curr = next |
| 61 | + next = next.Next |
| 62 | + } |
| 63 | + |
| 64 | + prev.Next = next |
| 65 | + return head |
| 66 | +} |
| 67 | + |
| 68 | +``` |
0 commit comments