LeetCode:1389. Create Target Array in the Given Order按既定顺序创建目标数组(C语言)

怼烎@ 2022-12-27 01:47 194阅读 0赞

题目描述:
给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:

  1. 目标数组 target 最初为空。
  2. 按从左到右的顺序依次读取 nums[i] index[i],在 target 数组中的下标 index[i] 处插入值 nums[i]
  3. 重复上一步,直到在 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]

提示:

  1. 1 <= nums.length, index.length <= 100
  2. nums.length == index.length
  3. 0 <= nums[i] <= 100
  4. 0 <= index[i] <= i

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/create-target-array-in-the-given-order
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:

  1. /** * Note: The returned array must be malloced, assume caller calls free(). */
  2. int* createTargetArray(int* nums, int numsSize, int* index, int indexSize, int* returnSize){
  3. int* res = (int*)malloc(sizeof(int) * indexSize);
  4. int tail = -1;
  5. int i = 0;
  6. int j = 0;
  7. for (i = 0; i < indexSize; i++) {
  8. for(j=indexSize-1;j>index[i];j--){
  9. res[j]=res[j-1];
  10. }
  11. res[index[i]] = nums[i];
  12. }
  13. *returnSize = indexSize;
  14. return res;
  15. }

运行结果:
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,194人围观)

还没有评论,来说两句吧...

相关阅读