(Простая проблема с литкодом)

Учитывая целочисленный массив 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.

Надеюсь это поможет! Продолжайте программировать и продолжайте учиться, потому что постоянство — это ключ!!! 💻🙌