跳转至

3925. 连接逆序数组

题目描述

给你一个长度为 n 的整数数组 nums

构造一个新的长度为 2 * n 的数组 ans,其中前 n 个元素与 nums 相同,后 n 个元素为 nums 的逆序。

具体而言,对于 0 <= i <= n - 1

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

返回整数数组 ans

 

示例 1:

输入: nums = [1,2,3]

输出: [1,2,3,3,2,1]

解释:

ans 的前 n 个元素与 nums 相同。

接下来的 n = 3 个元素按照 nums 的逆序填入:

  • ans[3] = nums[2] = 3
  • ans[4] = nums[1] = 2
  • ans[5] = nums[0] = 1

因此,ans = [1, 2, 3, 3, 2, 1]

示例 2:

输入: nums = [1]

输出: [1,1]

解释:

数组逆序后保持不变。因此,ans = [1, 1]

 

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

解法

方法一:模拟

我们创建一个长度为 \(2 \times n\) 的数组 \(\textit{ans}\),前 \(n\) 个元素与 \(\textit{nums}\) 相同,后 \(n\) 个元素为 \(\textit{nums}\) 的逆序。

具体而言,对于 \(0 \leq i \leq n - 1\),我们将 \(\textit{ans}[i]\) 赋值为 \(\textit{nums}[i]\),将 \(\textit{ans}[i + n]\) 赋值为 \(\textit{nums}[n - i - 1]\)

最后返回数组 \(\textit{ans}\) 即可。

时间复杂度 \(O(n)\),空间复杂度 \(O(n)\)。其中 \(n\) 是数组 \(\textit{nums}\) 的长度。

1
2
3
4
5
6
7
8
class Solution:
    def concatWithReverse(self, nums: list[int]) -> list[int]:
        n = len(nums)
        ans = [0] * (2 * n)
        for i, x in enumerate(nums):
            ans[i] = x
            ans[i + n] = nums[n - i - 1]
        return ans
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
class Solution {
    public int[] concatWithReverse(int[] nums) {
        int n = nums.length;
        int[] ans = new int[2 * n];
        for (int i = 0; i < n; ++i) {
            ans[i] = nums[i];
            ans[i + n] = nums[n - i - 1];
        }
        return ans;
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
class Solution {
public:
    vector<int> concatWithReverse(vector<int>& nums) {
        int n = nums.size();
        vector<int> ans(2 * n);
        for (int i = 0; i < n; ++i) {
            ans[i] = nums[i];
            ans[i + n] = nums[n - i - 1];
        }
        return ans;
    }
};
1
2
3
4
5
6
7
8
9
func concatWithReverse(nums []int) []int {
    n := len(nums)
    ans := make([]int, 2*n)
    for i, x := range nums {
        ans[i] = x
        ans[i+n] = nums[n-i-1]
    }
    return ans
}
1
2
3
4
5
6
7
8
9
function concatWithReverse(nums: number[]): number[] {
    const n = nums.length;
    const ans: number[] = new Array(2 * n);
    for (let i = 0; i < n; ++i) {
        ans[i] = nums[i];
        ans[i + n] = nums[n - i - 1];
    }
    return ans;
}

评论