文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个整数数组 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 <= nums.length <= 10^5
1 <= nums[i], k <= 10^9

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/append-k-integers-with-minimal-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 排序后,开始在数字的空隙之间取值出来,每次用等差数列求和公式得出区间的和
class Solution {public:long long minimalKSum(vector<int>& nums, int k) {sort(nums.begin(), nums.end());long long ans = 0;int prevnum = 0;for(int i = 0; i < nums.size() && k; ++i){prevnum = (i > 0) ? nums[i-1] : 0;prevnum++;if(prevnum < nums[i]) // 前后两个数字之间有可取的数字{int n = min(k, nums[i]-prevnum);// 项数k -= n; // 更新还要取的个数ans += (1LL*prevnum+prevnum+n-1)*n/2; // 更新答案}}if(k) // 还有没有取的{prevnum = nums.back()+1;ans += (1LL*prevnum+prevnum+k-1)*k/2;}return ans;}
};

116 ms 64.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 2195. 向数组中追加 K 个整数(贪心)相关推荐

  1. LeetCode刷题:向数组中追加 K 个整数

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

  2. Leetcode 215.数组中第k个最大元素 (每日一题 20210713)

    给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素.示例 1:输入: [3,2,1,5,6,4] 和 ...

  3. C语言求一个数组中第k大的数,leetcode | Median of Two Sorted Arrays 寻找2个有序数组中第k大的值...

    There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted ...

  4. Leetcode——2053. 数组中第 K 个独一无二的字符串

    数组中第 K 个独一无二的字符串 题目 解题思路 题目 独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串. 给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独 ...

  5. Leetcode215数组中第k大的数-最小堆

    题目 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出 ...

  6. 数组中第K大元素(java多种方式实现)

    题目描述: Leetcode215题:在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5 ...

  7. 求数组中第k个最小数

    一.问题描述 给定一个数组,数组中的数据无序,在一个数组中找出其第k个最小的数,例如对于数组x,x = {3,2,1,4,5,6},则其第2个最小的数为2. 二.解题思路 本算法跟快排的思想相似,首先 ...

  8. python 数组中第k个最大元素

    数组中第k个最大元素 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素.示例 1:输入: [3,2 ...

  9. 线性时间复杂度求数组中第K大数

    求数组中第K大的数可以基于快排序思想,步骤如下: 1.随机选择一个支点 2.将比支点大的数,放到数组左边:将比支点小的数放到数组右边:将支点放到中间(属于左部分) 3.设左部分的长度为L, 当K &l ...

最新文章

  1. python-opencv 常用工具总结
  2. ECCV 2020 | PHOSA:一种基于单目图像的人-物重建方法
  3. CorelDRAW中将矩形变圆角的方法
  4. CSRF 1 (转)
  5. JavaScript中发布/订阅模式的理解
  6. Netty的实现原理、特点与优势、以及适用场景
  7. java编译系统资源不足_Ant编译项目资源不足
  8. (46)System Verilog数组查找最大最小值
  9. Graph Structure of Neural Networks何凯明团队
  10. 摄像机成像公式、外参、内参(转载)
  11. 服务器不知道循环生成文件,Windows服务器下PowerShell命令往服务器共享文件夹进行文件拷贝、循环文件重命名...
  12. 七、深度学习中的正则化
  13. Android 中文 API (20) —— DatePicker
  14. linux删除所有python进程,linux 下python进程查看及关闭
  15. ES6之导入模块时的内存共享
  16. 无熟人难办事?- 闲聊设计模式-迪米特法则
  17. html标签中添加点击事件的写法
  18. ipad尺寸html,HTML5之viewport标签,用于iPhone、iPad等手机网页开发。
  19. 怎么学计算机打字输入,电脑怎么学习打字
  20. 【安装cad后不小心卸了,再次重新安装时显示已安装。这个怎么破?】

热门文章

  1. QT串口编程的相关类(QSerialPortInfo)
  2. windows API 串口编程参考
  3. 如何用css和HTML结合画熊,结合伪元素实现的纯CSS3高级图形绘制
  4. php copy array,ES6中Array.copyWithin()函数用法的详解
  5. Linux总线设备驱动框架的理解(非常棒的文章!)
  6. c++远征之模板篇——静态数据成员,静态成员函数
  7. JAVA开发工具下载
  8. 打CALL APP 项目进展 总体计划
  9. Android “再按一次退出“
  10. CF 46D Parking Lot