1389. Create Target Array in the Given Order #
Problem #
Given two arrays of integers nums and index. Your task is to create target array under the following rules:
- Initially target array is empty.
- From left to right read nums[i] and index[i], insert at index
index[i]the valuenums[i]in target array. - Repeat the previous step until there are no elements to read in
numsandindex.
Return the target array.
It is guaranteed that the insertion operations will be valid.
Example 1:
Input: nums = [0,1,2,3,4], index = [0,1,2,2,1]
Output: [0,4,1,3,2]
Explanation:
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]
Example 2:
Input: nums = [1,2,3,4,0], index = [0,1,2,3,0]
Output: [0,1,2,3,4]
Explanation:
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]
Example 3:
Input: nums = [1], index = [0]
Output: [1]
Constraints:
1 <= nums.length, index.length <= 100nums.length == index.length0 <= nums[i] <= 1000 <= index[i] <= i
Problem Summary #
You are given two integer arrays nums and index. You need to create the target array according to the following rules:
- The target array target is initially empty.
- Read nums[i] and index[i] sequentially from left to right, and insert the value nums[i] at the index index[i] in the target array.
- Repeat the previous step until there are no elements left to read in nums and index.
Return the target array. The problem guarantees that the insertion positions are always valid.
Solution Approach #
- Given 2 arrays, which contain the elements to be inserted and the positions to insert them at, respectively. Finally, output the array after all operations are completed.
- Easy problem; just insert elements according to the problem statement.
Code #
package leetcode
func createTargetArray(nums []int, index []int) []int {
result := make([]int, len(nums))
for i, pos := range index {
copy(result[pos+1:i+1], result[pos:i])
result[pos] = nums[i]
}
return result
}