直觉
问题是创建一个新数组,该数组是给定数组与其本身的串联。例如,如果给定的数组是[1, 2, 3]
,则新数组应为[1, 2, 3, 1, 2, 3]
。
方法
要创建新数组,我们首先可以分配给定数组的长度的两倍数组。然后,我们可以使用for循环将给定数组的每个元素复制到新数组两次:在原始索引,一次在索引上加上给定数组的长度。
复杂
-
时间复杂性:此代码的时间复杂性为$$ o(n)$$
其中n是给定数组的长度。这是因为我们需要一次迭代给定数组的每个元素,然后将其复制两次。 -
空间复杂性:此代码的空间复杂性为$$ o(n)$$
其中n是给定数组的长度。这是因为我们需要分配给定数组大小的两倍的新数组。
代码
class Solution {
public int[] getConcatenation(int[] nums) {
short len = (short) nums.length;
int[] newNums = new int[len * 2];
for (short i = 0; i < len; i++) {
newNums[i] = nums[i];
newNums[i + len] = nums[i];
}
return newNums;
}
}