(Простая проблема с литкодом)
Учитывая целочисленный массив nums
длины n
, вы хотите создать массив ans
длины 2n
, где ans[i] == nums[i]
и ans[i + n] == nums[i]
для 0 <= i < n
(0-индексированный).
В частности, ans
представляет собой объединение двух массивов nums
.
Верните массивans
.
Пример 1:
Input: nums = [1,2,1] Output: [1,2,1,1,2,1] Explanation: The array ans is formed as follows: - ans = [nums[0],nums[1],nums[2],nums[0],nums[1],nums[2]] - ans = [1,2,1,1,2,1]
Пример 2:
Input: nums = [1,3,2,1] Output: [1,3,2,1,1,3,2,1] Explanation: The array ans is formed as follows: - ans = [nums[0],nums[1],nums[2],nums[3],nums[0],nums[1],nums[2],nums[3]] - ans = [1,3,2,1,1,3,2,1]
Ограничения:
n == nums.length
1 <= n <= 1000
1 <= nums[i] <= 1000
Подход:
Подход состоит в том, чтобы просто снова вставить элементы массива, уже присутствующие в nums, поэтому он в основном объединяет элементы массива дважды.
Временная сложность — O (n)
Космическая сложность — O(1)
class Solution { public: vector<int> getConcatenation(vector<int>& nums) { int n = nums.size(); for(int i=0;i<n;i++) { nums.push_back(nums[i]); } return nums; } }; So for eg: nums = [1,2,1] is initially Afterwards it becomes nums = [1,2,1,1,2,1] We are just resizing the initial array to twice its length thats all the logic that is used in this question.
Надеюсь это поможет! Продолжайте программировать и продолжайте учиться, потому что постоянство — это ключ!!! 💻🙌