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 value nums[i] in target array.
Repeat the previous step until there are no elements to read in nums and index.
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 <= 100
nums.length == index.length
0 <= nums[i] <= 100
0 <= index[i] <= i

这题可以根据插入的次序把最终放入的索引算出来,然后根据最终的结果来进行数组的生成,而不是模拟数字的插入。

class CreateTargetArrayInTheGivenOrder : public Solution {
public:
    void Exec() {

    }
    vector<int> createTargetArray(vector<int>& nums, vector<int>& index) {
        for (int i = 1; i < index.size(); i++) {
            for (int j = 0; j < i; j++) {
                if (index[i] <= index[j]) {
                    index[j]++;
                }
            }
        }
        vector<int> res(nums.size(), 0);
        for (int i = 0; i < nums.size(); i++) {
            res[index[i]] = nums[i];
        }
        return res;
    }
};
共 0 条回复
暂时没有人回复哦,赶紧抢沙发
发表新回复

作者

sryan
today is a good day