1929.数组串联
给你一个长度为 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.基于排列构建数组
给你一个 从 0 开始的排列 nums(下标也从 0 开始)。请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans[i] = nums[nums[i]] 。返回构建好的数组 ans 。
从 0 开始的排列 nums 是一个由 0 到 nums.length - 1(0 和 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;
}
}