Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як перевернути масив?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Алгоритм двох вказівників** - міняємо місцями елементи з початку й кінця масиву, поступово рухаючись до центру. **Ключове:** це оптимальний спосіб - O(n) за часом і O(1) за пам'яттю, без створення нового масиву.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Алгоритм двох вказівників **Ідея:** Поміняти місцями елементи з початку і кінця масиву, поступово рухаючись до центру. ```javascript function reverseArray(arr) { let left = 0 let right = arr.length - 1 while (left < right) { // Міняємо місцями arr[left] і arr[right] const temp = arr[left] arr[left] = arr[right] arr[right] = temp left++ right-- } return arr } // Приклад: console.log(reverseArray([1, 2, 3, 4, 5])) // [5, 4, 3, 2, 1] ``` ### Складність - **Час:** `O(n)` - **Пам'ять:** `O(1)`, без створення нового масиву. --- ## 2. Переворот без зміни вихідного масиву Якщо за умовою не можна змінювати вихідний масив, можна створити новий: ```javascript function reversedCopy(arr) { const result = [] for (let i = arr.length - 1; i >= 0; i--) { result.push(arr[i]) } return result } console.log(reversedCopy([10, 20, 30])) // [30, 20, 10] ``` ### Складність - **Час:** `O(n)` - **Пам'ять:** `O(n)`, новий масив. --- ## 3. Через рекурсію (рідше, але часто питають) ```javascript function reverseRecursive(arr, left = 0, right = arr.length - 1) { if (left >= right) return arr const temp = arr[left] arr[left] = arr[right] arr[right] = temp return reverseRecursive(arr, left + 1, right - 1) } console.log(reverseRecursive([1, 2, 3, 4])) // [4, 3, 2, 1] ``` Рекурсія менш ефективна за пам'яттю (стек викликів), але наочно демонструє логіку "від країв до центру". --- ## Підсумок | Метод | Змінює масив | Час | Пам'ять | Особливості | |---|---|---|---|---| | **Два вказівники** | Так | O(n) | O(1) | Оптимальний спосіб | | **Цикл з новим масивом** | Ні | O(n) | O(n) | Без модифікації оригіналу | | **Рекурсія** | Так | O(n) | O(n) | Менш ефективно, але наочно |Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.