周赛第二题(向数组中追加K个数字)c++,c解法

好久没有更新了。这些天一直在忙,话不多说,我们直接进入主题,

2195. 向数组中追加 K 个整数

 显示英文描述 

我的提交返回竞赛

  • 通过的用户数3063
  • 尝试过的用户数5834
  • 用户总通过次数3152
  • 用户总提交次数23112
  • 题目难度Medium

给你一个整数数组 nums 和一个整数 k 。请你向 nums 中追加 k 个  出现在 nums 中的、互不相同 的  整数,并使结果数组的元素和 最小 。

返回追加到 nums 中的 k 个整数之和。

示例 1:

输入:nums = [1,4,25,10,25], k = 2
输出:5
解释:在该解法中,向数组中追加的两个互不相同且未出现的正整数是 2 和 3 。
nums 最终元素和为 1 + 4 + 25 + 10 + 25 + 2 + 3 = 70 ,这是所有情况中的最小值。
所以追加到数组中的两个整数之和是 2 + 3 = 5 ,所以返回 5 。

示例 2:

输入:nums = [5,6], k = 6
输出:25
解释:在该解法中,向数组中追加的两个互不相同且未出现的正整数是 1 、2 、3 、4 、7 和 8 。
nums 最终元素和为 5 + 6 + 1 + 2 + 3 + 4 + 7 + 8 = 36 ,这是所有情况中的最小值。
所以追加到数组中的两个整数之和是 1 + 2 + 3 + 4 + 7 + 8 = 25 ,所以返回 25 。

这就是这道题的背景,好,来开始分析!

首先,我们知道,我们有一个紧密的1-n的数组,题目中的给我们的数组不是一个紧密的数组,比如nums【i+1】与nums【i】我们不知道这里面有多少个数,所以,我们的思路是不是逐渐清晰了?

sort(nums.begin(),nums.end());

 现在他们递增排列了,我们来个for循环 遍历整个数组

if(nums[i+1]-nums[i]>1)

我们计算出这两个之间的差多少,就是多少个数字,从i+1 一直到nums[i+1]-1 

我们可以先把它们放到一个数组里面 然后在里面相加。就这样我们可以一直循环,直到

到K为止

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橘子买5斤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值