1929-数组串联

Raphael Liu Lv10

给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有
0 <= i < ni ,满足下述所有要求:

  • ans[i] == nums[i]
  • ans[i + n] == nums[i]

具体而言,ans 由两个 nums 数组 串联 形成。

返回数组 __ans

示例 1:

**输入:** nums = [1,2,1]
**输出:** [1,2,1,1,2,1]
**解释:** 数组 ans 按下述方式形成:
- ans = [nums[0],nums[1],nums[2],nums[0],nums[1],nums[2]]
- ans = [1,2,1,1,2,1]

示例 2:

**输入:** nums = [1,3,2,1]
**输出:** [1,3,2,1,1,3,2,1]
**解释:** 数组 ans 按下述方式形成:
- 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 数组的元素,并按顺序添加至 nums 数组的尾部。最终,修改后的 nums 数组即为串联形成的数组,我们返回该数组作为答案。

对于 Python 语言,我们可以直接使用 list 的 extend}() 方法实现串联操作。

代码

[sol1-C++]
1
2
3
4
5
6
7
8
9
10
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;
}
};
[sol1-Python3]
1
2
3
4
class Solution:
def getConcatenation(self, nums: List[int]) -> List[int]:
nums.extend(nums)
return nums

复杂度分析

  • 时间复杂度:O(n),其中 n 为 nums 的长度。即为遍历与串联的时间复杂度。

  • 空间复杂度:O(1),输出数组不计入空间复杂度。

 Comments
On this page
1929-数组串联