数组赋复制串联

给你一个长度为 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]

第一种方法
使用循环赋值

class Concatenation {
    
    
    public int[] getConcatenation(int[] nums) {
    
    

        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;
    }
}

第二种
使用数组自带的方法

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

猜你喜欢

转载自blog.csdn.net/heart_is_broken/article/details/121381563