1929年。数组的串联-Java解决方案在运行时击败94%(极其逻辑解决方案)
#编程 #java #leetcode #数组

直觉

问题是创建一个新数组,该数组是给定数组与其本身的串联。例如,如果给定的数组是[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;
    }
}