首页 > 其他分享 >LeetCode刷题(72)~按既定顺序创建目标数组【!】

LeetCode刷题(72)~按既定顺序创建目标数组【!】

时间:2023-01-12 14:38:43浏览次数:47  
标签:index nums int res vector 72 数组 LeetCode 刷题


题目描述

给你两个整数数组 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]

提示:

  • 1 <= nums.length, index.length <= 100
  • nums.length == index.length
  • 0<= nums[i] <= 100
  • 0 <= index[i] <= i

解答

提交代码

vector<int> createTargetArray(vector<int>& nums, vector<int>& index) {
vector<int> res;
for(int i = 0; i < index.size(); ++i){
res.insert(res.begin()+index[i], nums[i]);
}
return res;
}

运行结果

LeetCode刷题(72)~按既定顺序创建目标数组【!】_数组


提交代码(更新index数组)

vector<int> createTargetArray(vector<int>& nums, vector<int>& index) {
vector<int> res(nums.size());
int len=nums.size();
for(int i=0;i<len;++i)
{
for(int j=0;j<i;++j)
index[j]+= index[j]>=index[i]? 1:0;
}
for(int i=0;i<len;++i)
res[index[i]]=nums[i];
return res;
}

运行结果

LeetCode刷题(72)~按既定顺序创建目标数组【!】_数组_02


提交代码(原地交换)

vector<int> createTargetArray(vector<int>& nums, vector<int>& index) {
for(int i=0; i < index.size(); i++) {
if (i > index[i]) {
int t = nums[i];
for(int j = i-1; j >= index[i]; j--) {
nums[j+1] = nums[j];
}
nums[index[i]] = t;
}
}
return nums;
}

运行结果

LeetCode刷题(72)~按既定顺序创建目标数组【!】_i++_03

题目来源

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/create-target-array-in-the-given-order


标签:index,nums,int,res,vector,72,数组,LeetCode,刷题
From: https://blog.51cto.com/u_15939722/6004152

相关文章

  • LeetCode刷题(73)~Nim 游戏
    题目描述你和你的朋友,两个人一起玩Nim游戏:桌子上有一堆石头,每次你们轮流拿掉1-3块石头。拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优......
  • LeetCode刷题(76)~三步问题
    题目描述三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示......
  • LeetCode刷题(75)~按摩师
    题目描述一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师......
  • LeetCode刷题(77)~三角形的最大周长
    题目描述给定由一些正数(代表长度)组成的数组A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。示例1:输入:[2,1,2]输......
  • LeetCode刷题(78)~找到所有数组中消失的数字【原值作索引】
    题目描述给定一个范围在1≤a[i]≤n(n=数组大小)的整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在[1,n]范围之间没有出现在数组中的数字。......
  • LeetCode刷题(79)~分糖果【哈希】
    题目描述给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的......
  • LeetCode刷题(81)~数组中数字出现的次数【分组异或】
    题目描述一个整型数组nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例1:输入:nums=[4,1,......
  • LeetCode刷题(107)~制造字母异位词的最小步骤数【巧妙】
    题目描述给你两个长度相等的字符串s和t。每一个步骤中,你可以选择将t中的任一字符替换为另一个字符。返回使t成为s的字母异位词的最小步骤数。字母异位词指字母......
  • Hive 刷题——查询用户的累计消费金额及VIP等级
    需求描述从订单信息表(order_info)中统计每个用户截止其每个下单日期的累积消费金额,以及每个用户在其每个下单日期的VIP等级。用户vip等级根据累积消费金额计算,计算规则如......
  • LeetCode刷题(105)~同构字符串【映射】
    题目描述给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以被替换得到t,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的......