Skip to main content

Як перевернути масив?

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)Менш ефективно, але наочно

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.