LeetCode no.1929 数组串联

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

LeetCode no.1929 数组串联_第1张图片

其实就是简单的数组拼接,我原来是想找一下看有没有现成的方法来做数组拼接,ArrayUtils.addAll(nums, nums)这个方法是可以,不过力扣似乎不支持使用现成的方法来完成算法,测试用例没有通过

具体思路就是先定义一个长度为原始数据2倍的新数组,然后使用原数组进行for循环,每次在i和i+原数组length的位置插入原数组的值,这样就可以实现同时在0和4的位置同时插入相同的值,{1, , , ,1,  , , }最后实现效果就是{1,2,3,4,1,2,3,4}

题目比较简单,先从简单的做起吧,希望可以坚持下去!

你可能感兴趣的:(LeetCode算法题,leetcode,算法,java)