1929. 数组串联

题目

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

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

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

返回数组 ans

示例1:

1
2
3
4
5
输入: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:

1
2
3
4
5
输入: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

解法

解法一:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public int[] getConcatenation(int[] nums) {
if (null == nums) {
return null;
}

if (0 == nums.length) {
return new int[]{};
}

int n = nums.length;
int[] ans = Arrays.copyOf(nums, n*2);
System.arraycopy(nums, 0, ans, n, n);
return ans;
}

解法二:

Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public int[] getConcatenation(int[] nums) {
if (null == nums) {
return null;
}

if (0 == nums.length) {
return new int[]{};
}

int[] result = new int[2 * nums.length];
for (int i = 0;i < nums.length ;i++) {
result[i] = nums[i];
result[i + nums.length] = nums[i];
}
return result;
}
0%