给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < n 的 i ,满足下述所有要求:
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
java题解
public class lt1929 {
public static void main(String[] args) {
int[] nums = {0, 1, 2};
System.out.println(getConcatenation(nums));
}
public static int[] getConcatenation(int[] nums) {
//使用工具类解答,不通过
// int[] both = ArrayUtils.addAll(nums, nums);
// return both;
int[] ans = new int[nums.length * 2];
for (int i = 0; i < nums.length; i++) {
ans[i] = nums[i];
ans[i + nums.length] = nums[i];
}
return ans;
}
}
其实就是简单的数组拼接,我原来是想找一下看有没有现成的方法来做数组拼接,ArrayUtils.addAll(nums, nums)这个方法是可以,不过力扣似乎不支持使用现成的方法来完成算法,测试用例没有通过
具体思路就是先定义一个长度为原始数据2倍的新数组,然后使用原数组进行for循环,每次在i和i+原数组length的位置插入原数组的值,这样就可以实现同时在0和4的位置同时插入相同的值,{1, , , ,1, , , }最后实现效果就是{1,2,3,4,1,2,3,4}
题目比较简单,先从简单的做起吧,希望可以坚持下去!