Leetcode 1929.数组串联

95 阅读1分钟

1929.数组串联

题目链接:leetcode.cn/problems/co…

给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans ,数组下标 从 0 开始计数 ,对于所有 0 <= i < n 的 i ,满足下述所有要求:

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

具体而言,ans 由两个 nums 数组 串联 形成。 返回数组 **ans 。

输入: 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*n,把nums里边的数放进去,放两遍

代码实现

class Solution {

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

int[]ans=new int[nums.length*2];

for(int i=0;i<nums.length;i++){

ans[i]=nums[i];

}

for(int i=nums.length;i<ans.length;i++){

ans[i]=nums[i-nums.length];//复制第二遍

}

return ans;

}

}

1920.基于排列构建数组

题目链接:leetcode.cn/problems/bu…

给你一个 从 0 开始的排列 nums下标也从 0 开始)。请你构建一个 同样长度 的数组 ans ,其中,对于每个 i0 <= i < nums.length),都满足 ans[i] = nums[nums[i]] 。返回构建好的数组 ans 。

从 0 开始的排列 nums 是一个由 0 到 nums.length - 10 和 nums.length - 1 也包含在内)的不同整数组成的数组。

输入: nums = [0,2,1,5,3,4]
输出: [0,1,2,4,5,3] 解释: 数组 ans 构建如下:
ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]
   = [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]]
   = [0,1,2,4,5,3]

思路

按照题意理解即可

代码实现

class Solution {

public int[] buildArray(int[] nums) {

int[]ans=new int[nums.length];

for(int i=0;i<nums.length;i++){

ans[i]=nums[nums[i]];

}

return ans;

}

}