未解决的算法题

vector={100,400,500,700};
map<int,int> 里面有数据 <1,50>,<2,70>,<4,450>,map的第一个字段表示这个第二个字段的数据希望插入vector的指定位置。

要求O(N)时间复杂度
直接往vector里insert会导致vector后面的数据移动,时间复杂度是O(N*M);有没有其他方法。

vector里面有N个元素,map里面有M个元素,先new 一个N+M个元素的vector。
遍历map m,依次把map里面的值和vector old里的值填入新的vector res
int start=1;
int oldid=0;
for(auto it:m){
if(it.first!=start){
res[start]=old[oldid];
oldid++;
}else{
res[start]=it.second;
}
start++;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值