题目
1389. 按既定顺序创建目标数组
描述
给你两个整数数组 nums
和 index
。你需要按照以下规则创建目标数组:
- 目标数组
target
最初为空。 - 按从左到右的顺序依次读取
nums[i]
和index[i]
,在target
数组中的下标index[i]
处插入值nums[i]
。 - 重复上一步,直到在
nums
和index
中都没有要读取的元素。
请你返回目标数组。
题目保证数字插入位置总是存在。
示例 1:
输入: nums = [0,1,2,3,4], index = [0,1,2,2,1]
输出:[0,4,1,3,2]
解释:
nums index target
0 0 [0]
1 1 [0,1]
2 2 [0,1,2]
3 2 [0,1,3,2]
4 1 [0,4,1,3,2]
示例 2:
输入: nums = [1,2,3,4,0], index = [0,1,2,3,0]
输出: [0,1,2,3,4]
解释:
nums index target
1 0 [1]
2 1 [1,2]
3 2 [1,2,3]
4 3 [1,2,3,4]
0 0 [0,1,2,3,4]
示例 3:
**输入:**nums = [1], index = [0]
输出:[1]
解题思路
- 因为数组在不断变化,所以新建一个列表
list
,作为存储不断变化的“数组”; - 对
nums
和index
从左到右依次读取,利用列表的add()
方法,将下标index[i]
处插入值nums[i]
; - 因为最终返回值是
int
数组,所以新建一个int
数组target
; - 将
list
转换为target
; - 返回
target
;
实现
package Array;
import java.util.ArrayList;
/**
* Created with IntelliJ IDEA.
* Version : 1.0
* Author : cunyu
* Email : [email protected]
* Website : https://cunyu1943.github.io
* Date : 2020/3/26 10:55
* Project : LeetCode
* Package : Array
* Class : OneThreeEightNine
* Desc : 1389. 按既定顺序创建目标数组
*/
public class OneThreeEightNine {
public static void main(String[] args) throws Exception {
OneThreeEightNine oneThreeEightNine = new OneThreeEightNine();
int[] nums = {0, 1, 2, 3, 4};
int[] index = {0, 1, 2, 2, 1};
for (int item : oneThreeEightNine.createTargetArray(nums, index)
) {
System.out.println(item);
}
}
public int[] createTargetArray(int[] nums, int[] index) {
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < nums.length;i++){
list.add(index[i],nums[i]);
}
int[] target = new int[nums.length];
for (int i = 0; i < list.size(); i++) {
target[i] = list.get(i);
}
return target;
}
}