Различные подходы к решению этой проблемы в JavaScript
Постановка задачи:
Учитывая целочисленный массив
num
длиныn
, вы хотите создать массивans
длины2n
, гдеans[i] == nums[i]
иans[i + n] == nums[i]
для0 <= i < n
(0-индексированный). В частности,ans
представляет собой объединение двух массивовnums
.
В JavaScript объединение двух массивов — это процесс объединения элементов двух массивов в один массив. Это можно сделать с помощью метода concat()
, который возвращает новый массив, состоящий из элементов исходного массива, за которыми следуют элементы массива(ов) аргументов.
Подход 1. Массивы в JavaScript являются динамическими.
- Объявить пустой массив
result
. - Переберите массив
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: постоянное пространство
- Сохраните длину массива
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