Различные подходы к решению этой проблемы в JavaScript

Постановка задачи:

Учитывая целочисленный массив num длины n, вы хотите создать массив ans длины 2n, где ans[i] == nums[i] и ans[i + n] == nums[i] для 0 <= i < n (0-индексированный). В частности, ans представляет собой объединение двух массивов nums.

В JavaScript объединение двух массивов — это процесс объединения элементов двух массивов в один массив. Это можно сделать с помощью метода concat(), который возвращает новый массив, состоящий из элементов исходного массива, за которыми следуют элементы массива(ов) аргументов.

Подход 1. Массивы в JavaScript являются динамическими.

  1. Объявить пустой массив result.
  2. Переберите массив arr и для каждого элемента назначьте одно и то же для result[i] и result[i + arr.length] .
// ES6 Arrow Function
const concatenationArray = arr => {
    let result = [];

    for(let i  = 0; i < arr.length; i++) {
        result[i] = arr[i];
        result[i + arr.length] = arr[i];
    }

    return result;
}

Временная сложность:O(N)

Пространственная сложность:O(N)

Подход 2: постоянное пространство

  1. Сохраните длину массива arr в переменной n, а затем запустите цикл n раз и поместите элементы в тот же массив.
// ES6 Arrow Function
const concatenationArray = arr => {
    let n = arr.length;
    for(let i = 0; i < n; i++) {
        arr.push(arr[i]);
    }

    return arr;
}

Временная сложность:O(n)

Пространственная сложность:O(1)

Примечание.Вот несколько забавных способов объединения массивов с помощью встроенных функций и операторов в JavaScript, таких как concat и spread.

Примечание. Время и пространство для них будут линейными.

// ES6 Arrow Function
const concatenationArray = arr => [...arr, ...arr];
// ES6 Arrow Function
const concatenationArray = arr => arr.concat(arr);

Я надеюсь, что эта статья предоставила вам ценную информацию и помогла вам лучше понять различные подходы к решению этой проблемы. Удачного кодирования!

Задача - Литкод 1929