好久没有更新了。这些天一直在忙,话不多说,我们直接进入主题,
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为止