首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

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

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

4.遍历  中的每个元素 。

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

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

• 初始化变量  为 ,表示将小于  的元素增加到  的操作次数。

• 在  函数中,使用二分查找找到  中大于等于  的最左位置,并将结果赋给 。

• 将  更新为 ,表示将大于  的元素减小到  的操作次数。

7.将  添加到  数组中。

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

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

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

11.打印结果 。

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

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

go完整代码如下:

在这里插入图片描述rust完整代码如下:

在这里插入图片描述c++完整代码如下:

在这里插入图片描述c完整代码如下:

在这里插入图片描述

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OjGkNZN2yRdZ8_-KeYVWeMkQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券