网易首页 > 网易号 > 正文 申请入驻

2023-08-28:用go语言编写。给你一个正整数数组nums, 同时给你一

0
分享至

2023-08-28:用go语言编写。给你一个正整数数组nums, 同时给你一个长度为 m 的整数数组 queries。

第 i 个查询中,你需要将 nums 中所有元素变成 queries[i] 。你可以执行以下操作 任一 次:

将数组里一个元素 增大 或者 减小 1 。请你返回一个长度为 m 的数组 answer ,

其中 answer[i]是将 nums 中所有元素变成 queries[i] 的 最少 操作次数。

注意,每次查询后,数组变回最开始的值。

输入:nums = [3,1,6,8], queries = [1,5]。

输出:[14,10]。

来自左程云。

答案2023-08-28:

大体过程如下:

1.定义函数,用于计算将中的元素转换为中每个元素所需的最少操作次数。函数接受两个参数:(正整数数组)和(整数数组)。

minOperations

nums

queries

nums

queries

2.获取数组的长度,对进行排序,并创建一个长度为的数组,用于保存从累加得到的前缀和。

nums

nums

n+1

sum

nums

3.创建一个空的数组,用于存储结果。

ans

4.遍历中的每个元素。

queries

v

5.在函数中,使用二分查找找到中小于的最右位置,并将结果赋给。

bs

nums

v

less

6.计算当前查询对应的最少操作次数:

curAns

  • •初始化变量为,表示将小于的元素增加到的操作次数。
  • curAns
  • (less+1)*v - sum0(sum, 0, less)
  • v
  • v
  • •在函数中,使用二分查找找到中大于等于的最左位置,并将结果赋给。
  • bs
  • nums
  • v+1
  • more
  • •将更新为,表示将大于的元素减小到的操作次数。
  • curAns
  • curAns + sum0(sum, more+1, n-1) - (n-more-1)*v
  • v
  • v

7.将添加到数组中。

curAns

ans

8.返回得到的数组作为结果。

ans

9.在函数中,定义给定的和。

main

nums

queries

10.调用函数,并将结果赋给。

minOperations

result

11.打印结果。

result

总体的时间复杂度是 O(m*log(n)),其中 m 是的长度,n 是的长度。这是因为对于每个查询,都需要使用二分查找来找到相应的位置。

queries

nums

总体的空间复杂度是 O(n),其中 n 是的长度。这是因为需要创建额外的数组来保存前缀盒。

nums

sum

go完整代码如下:

packagemain
import(
"fmt"
"sort"
)
funcminOperations(nums[]int,queries[]int)[]int{
n:=len(nums)
sort.Ints(nums)
sum:=make([]int,n+1)
fori:=0;isum[i+1]=sum[i]+int(nums[i])
}
ans:=make([]int,0)
varless,more,curAnsint
for_,v:=rangequeries{
less=bs(nums,v)
curAns=(less+1)*int(v)-sum0(sum,0,int(less))
more=bs(nums,v+1)
curAns+=sum0(sum,more+1,n-1)-int(n-more-1)*int(v)
ans=append(ans,curAns)
}
returnans
}
//查找
//没有返回-1
funcbs(nums[]int,vint)int{
l:=0
r:=len(nums)-1
varm,ansint=-1,-1
forl<=r{
m=int((l+r)/2)
ifnums[m]ans=m
l=int(m+1)
}else{
r=int(m-1)
}
}
returnans
}
funcsum0(sum[]int,l,rint)int{
ifl>r{
return0
}
returnsum[r+1]-sum[l]
}
funcmain(){
nums:=[]int{3,1,6,8}
queries:=[]int{1,5}
result:=minOperations(nums,queries)
fmt.Println(result)
}

rust完整代码如下:

fnmin_operations(nums:Vec,queries:Vec)->Vec{
letmutnums=nums.clone();
nums.sort();
letn=nums.len()asi32;
letmutsum=vec![0;nasusize+1];
foriin0..n{
sum[iasusize+1]=sum[iasusize]+nums[iasusize]asi64;
}
letmutans=Vec::new();
forvinqueries{
letless=bs(&nums,v);
letmutcur_ans=(less+1)asi64*vasi64-sum0(&sum,0,less);
letmore=bs(&nums,v+1);
cur_ans+=sum0(&sum,more+1,n-1)-(n-more-1)asi64*vasi64;
ans.push(cur_ans);
}
ans
}
fnbs(nums:&Vec,v:i32)->i32{
letmutl=0;
letmutr=nums.len()asi32-1;
letmutans=-1;
whilel<=r{
letm=(l+r)/2;
ifnums[masusize]ans=m;
l=m+1;
}else{
r=m-1;
}
}
ans
}
fnsum0(sum:&Vec,l:i32,r:i32)->i64{
ifl>r{
0
}else{
sum[rasusize+1]-sum[lasusize]
}
}
fnmain(){
letnums=vec![3,1,6,8];
letqueries=vec![1,5];
letresult=min_operations(nums,queries);
println!("{:?}",result);
}

c++完整代码如下:

#include
#include
#include
usingnamespacestd;
intbs(vector&nums,intv){
intl=0;
intr=nums.size()-1;
intm,ans=-1;
while(l<=r){
m=(l+r)/2;
if(nums[m]ans=m;
l=m+1;
}
else{
r=m-1;
}
}
returnans;
}
longlongsum0(vector&sum,intl,intr){
returnl>r?0:(sum[r+1]-sum[l]);
}
vectorminOperations(vector&nums,vector&queries){
intn=nums.size();
sort(nums.begin(),nums.end());
vectorsum(n+1,0);
for(inti=0;isum[i+1]=sum[i]+nums[i];
}
vectorans;
intless,more;
longlongcurAns;
for(intv:queries){
less=bs(nums,v);
curAns=(longlong)(less+1)*v-sum0(sum,0,less);
more=bs(nums,v+1);
curAns+=sum0(sum,more+1,n-1)-(longlong)(n-more-1)*v;
ans.push_back(curAns);
}
returnans;
}
intmain(){
vectornums={3,1,6,8};
vectorqueries={1,5};
vectorresult=minOperations(nums,queries);
for(longlongans:result){
cout<}
cout<
return0;
}

c完整代码如下:

#include
#include
intbinarySearch(int*nums,intnumsSize,intv){
intl=0;
intr=numsSize-1;
intm,ans=-1;
while(l<=r){
m=(l+r)/2;
if(nums[m]ans=m;
l=m+1;
}
else{
r=m-1;
}
}
returnans;
}
longlongsum(longlong*sumArray,intl,intr){
returnl>r?0:(sumArray[r+1]-sumArray[l]);
}
intcmpfunc(constvoid*a,constvoid*b){
return(*(int*)a-*(int*)b);
}
longlong*minOperations(int*nums,intnumsSize,int*queries,intqueriesSize,int*returnSize){
intn=numsSize;
qsort(nums,n,sizeof(int),cmpfunc);
longlong*sumArray=(longlong*)malloc((n+1)*sizeof(longlong));
sumArray[0]=0;
for(inti=0;isumArray[i+1]=sumArray[i]+nums[i];
}
longlong*ans=(longlong*)malloc(queriesSize*sizeof(longlong));
intless,more;
longlongcurAns;
for(inti=0;iintv=queries[i];
less=binarySearch(nums,n,v);
curAns=(longlong)(less+1)*v-sum(sumArray,0,less);
more=binarySearch(nums,n,v+1);
curAns+=sum(sumArray,more+1,n-1)-(longlong)(n-more-1)*v;
ans[i]=curAns;
}
*returnSize=queriesSize;
returnans;
}
intmain(){
intnums[]={3,1,6,8};
intqueries[]={1,5};
intnumsSize=sizeof(nums)/sizeof(nums[0]);
intqueriesSize=sizeof(queries)/sizeof(queries[0]);
intreturnSize;
longlong*result=minOperations(nums,numsSize,queries,queriesSize,&returnSize);
printf("Result:");
for(inti=0;iprintf("%lld",result[i]);
}
printf("\n");
free(result);
return0;
}

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
也凶,也不凶!!

也凶,也不凶!!

风子说个球
2024-05-06 14:18:09
叶海洋生了双胞胎

叶海洋生了双胞胎

Auroua
2024-06-20 17:39:57
陈晓陈妍希婚变内幕:女方卑微挽回,疑患抑郁症,做音疗画面曝光

陈晓陈妍希婚变内幕:女方卑微挽回,疑患抑郁症,做音疗画面曝光

古希腊掌管月桂的神
2024-06-19 19:24:48
欧洲杯重大争议!VAR拒绝改判,东道主获利了,主裁判被球迷狂嘘

欧洲杯重大争议!VAR拒绝改判,东道主获利了,主裁判被球迷狂嘘

侃球熊弟
2024-06-20 00:37:43
表面人模人样,实则是流氓头子,家暴恶魔,这6位男星太令人作呕

表面人模人样,实则是流氓头子,家暴恶魔,这6位男星太令人作呕

蜉蝣说
2024-06-17 22:30:51
圈内老演员聚餐,刘奕君拉着张嘉译寒暄,文章眼神闪躲被忽视!

圈内老演员聚餐,刘奕君拉着张嘉译寒暄,文章眼神闪躲被忽视!

鑫鑫说说
2024-06-20 16:27:42
姑娘下次自拍时注意些,隐私都被大家看到了,网友:多管闲事哈哈

姑娘下次自拍时注意些,隐私都被大家看到了,网友:多管闲事哈哈

匹夫来搞笑
2024-06-16 07:25:21
单位里一把手领导更换后,通常这三个部门的负责人是铁定要调整的

单位里一把手领导更换后,通常这三个部门的负责人是铁定要调整的

蘑菇老大
2024-06-18 10:37:09
中国“单方面”对法德意澳等免签,上赶着释放善意,国人深感不解

中国“单方面”对法德意澳等免签,上赶着释放善意,国人深感不解

三分亮剑
2024-06-19 17:45:11
痛心!又一老总跳楼身亡,年仅55岁,知情人曝轻生原因,太可惜了

痛心!又一老总跳楼身亡,年仅55岁,知情人曝轻生原因,太可惜了

娱乐小可爱蛙
2024-06-11 20:34:17
烂!王劲松翻拍新《射雕》,全员选角辣眼骂声一片,被嘲晚节不保

烂!王劲松翻拍新《射雕》,全员选角辣眼骂声一片,被嘲晚节不保

娱乐圈笔娱君
2024-06-18 17:50:43
4年1.6亿?兄弟,你真敢要,场均14+4+1,却要拿队内第一的薪水

4年1.6亿?兄弟,你真敢要,场均14+4+1,却要拿队内第一的薪水

体坛热评
2024-06-20 22:58:04
扫地出门!曝拜仁决定“驱逐”7000万主力!28球射手自荐遭拒绝

扫地出门!曝拜仁决定“驱逐”7000万主力!28球射手自荐遭拒绝

头狼追球
2024-06-20 14:17:27
普京下重手:俄唯一女大将,全球军衔最高的女性舍夫佐娃被解职!

普京下重手:俄唯一女大将,全球军衔最高的女性舍夫佐娃被解职!

咖啡店的老板娘
2024-06-19 20:04:46
1.77亿,再见勇士!两核心确定离队,管理层换血早已决定了清算

1.77亿,再见勇士!两核心确定离队,管理层换血早已决定了清算

呆哥聊球
2024-06-19 22:18:50
阿里巴巴发文评价姜萍,初中数学就很突出,断崖式领先其他科目

阿里巴巴发文评价姜萍,初中数学就很突出,断崖式领先其他科目

冒泡泡的鱼儿
2024-06-20 16:48:16
她高居要职,德不配位!余琦的处罚已经出来了!这次可是真栽了!

她高居要职,德不配位!余琦的处罚已经出来了!这次可是真栽了!

今日搞笑分享
2024-06-20 16:12:10
凯迪拉克新XT6内饰首曝!“放弃”双联屏,7月上市

凯迪拉克新XT6内饰首曝!“放弃”双联屏,7月上市

爱卡汽车
2024-06-20 16:48:20
2018年,那个检举男友一家贪腐的女子,两年后,自己也被判刑3年

2018年,那个检举男友一家贪腐的女子,两年后,自己也被判刑3年

可乐86
2024-05-16 09:12:38
蒙蒂执教活塞1年拿到7850万美元工资 超过任何NBA顶薪球员

蒙蒂执教活塞1年拿到7850万美元工资 超过任何NBA顶薪球员

直播吧
2024-06-20 12:14:14
2024-06-20 23:30:44
moonfdd
moonfdd
福大大架构师每日一题
428文章数 7关注度
往期回顾 全部

科技要闻

小米SU7流量泼天,富贵却被蔚来接住了

头条要闻

机井打完电却难通 投资2400多万的高标准农田设施烂尾

头条要闻

机井打完电却难通 投资2400多万的高标准农田设施烂尾

体育要闻

绿军的真老大,开始备战下赛季了

娱乐要闻

叶舒华参加柯震东生日聚会,五毒俱全

财经要闻

楼市加速去库存 收储扩围至县级以上城市

汽车要闻

售价11.79-14.39万元 新一代哈弗H6正式上市

态度原创

本地
旅游
数码
家居
军事航空

本地新闻

2024·合肥印象|用崭新视角对话城市发展

旅游要闻

铁路儿童票新规 已有超4900万小旅客免费出行

数码要闻

优派推出 4K 160Hz 显示器 VX2759-4K-PRO,首发 2099 元

家居要闻

自然开放 实现灵动可变空间

军事要闻

以军发言人公开表示"哈马斯无法被消灭" 以政府反驳

无障碍浏览 进入关怀版