来源:力扣(LeetCode)

描述:

给你一个正整数数组 price ,其中 price[i] 表示第 i 类糖果的价格,另给你一个正整数 k

商店组合 k不同 糖果打包成礼盒出售。礼盒的 甜蜜度 是礼盒中任意两种糖果 价格 绝对差的最小值。

返回礼盒的 最大 甜蜜度。

示例 1:

输入:price = [13,5,1,8,21,2], k = 3
输出:8
解释:选出价格分别为 [13,5,21] 的三类糖果。
礼盒的甜蜜度为 min(|13 - 5|, |13 - 21|, |5 - 21|) = min(8, 8, 16) = 8 。
可以证明能够取得的最大甜蜜度就是 8 。

示例 2:

输入:price = [1,3,1], k = 2
输出:2
解释:选出价格分别为 [1,3] 的两类糖果。
礼盒的甜蜜度为 min(|1 - 3|) = min(2) = 2 。
可以证明能够取得的最大甜蜜度就是 2 。

示例 3:

输入:price = [7,7,7,7], k = 2
输出:0
解释:从现有的糖果中任选两类糖果,甜蜜度都会是 0 。

提示:

  • 1 <= price.length <= 105
  • 1 <= price[i] <= 109
  • 2 <= k <= price.length

方法:贪心 + 二分查找

思路

礼盒的甜蜜度是 k 种不同的糖果中,任意两种糖果价格差的绝对值的最小值。计算礼盒的甜蜜度时,可以先将 k 种糖果按照价格排序,然后计算相邻的价格差的绝对值,然后取出最小值。

要求甜蜜度的最大值,可以采用二分查找的方法。先假设一个甜蜜度 mid,然后尝试在排好序的 price 中找出 k 种糖果,并且任意两种相邻的价格差绝对值都大于 mid。如果可以找到这样的 k 种糖果,则说明可能存在更大的甜蜜度,需要修改二分查找的下边界;如果找不到这样的 k 种糖果,则说明最大的甜蜜度只可能更小,需要修改二分查找的上边界。

在假设一个甜蜜度 mid 后,在排好序的 price 中找 k 种糖果时,需要用到贪心的算法。即从小到大遍历 price 的元素,如果当前糖果的价格比上一个选中的糖果的价格的差大于 mid,则选中当前糖果,否则继续考察下一个糖果。

二分查找起始时,下边界为 0,上边界为 price 的最大值与最小值之差。二分查找结束时,即可得到最大甜蜜度。

代码:

class Solution {public:int maximumTastiness(vector<int>& price, int k) {int n = price.size();sort(price.begin(), price.end());int left = 0, right = price[n - 1] - price[0];while (left < right) {int mid = (left + right + 1) >> 1;if (check(price, k, mid)) {left = mid;} else {right = mid - 1;}}return left;}bool check(const vector<int> &price, int k, int tastiness) {int prev = INT_MIN >> 1;int cnt = 0;for (int p : price) {if (p - prev >= tastiness) {cnt++;prev = p;}}return cnt >= k;}
};

执行用时:132 ms, 在所有 C++ 提交中击败了98.21%的用户
内存消耗:47.2 MB, 在所有 C++ 提交中击败了83.33%的用户
复杂度分析
时间复杂度:O(nlogn+nlogC),其中 n 是数组 price 的长度,C 是数组 price 的最大值与最小值之差。排序的时间是 O(nlogn),二分查找的次数是 O(logC),每次查找的时间是 O(n)。
空间复杂度:O(logn),其中 n 是数组 price 的长度。为排序的空间复杂度。
author:LeetCode-Solution

【2517. 礼盒的最大甜蜜度】相关推荐

  1. 2.技巧※(0x3f:从周赛中学算法 2022)

    来自0x3f[从周赛中学算法 - 2022 年周赛题目总结(下篇)]:https://leetcode.cn/circle/discuss/WR1MJP/ 技巧指一些比较套路的算法,包括双指针.滑动窗 ...

  2. 2022年七夕送女朋友什么礼物好?实用且好看的礼物推荐

    眼看七夕马上就要到了,各位男生现在是不是特别发愁,要送女朋友什么七夕礼物.送七夕礼物这件事,看似很简单,其实很能反映一个人的品味跟共情能力.给女朋友送礼,更关系到你们的爱情甜蜜度指数哦!别着急,贴心的 ...

  3. 圣诞夜表白代码!看你答不答应

    公众号[走神研究所]回复[表白]获取网站 这里有棵会动的圣诞树来帮助你表白噢! 圣诞节马上要到了,不知道有没有和你一起过节的人呢? 还没有?没关系,看看这个圣诞夜表白代码,发给你心仪的人,伴着音乐和动 ...

  4. 苹果手机壳_换种方式秀恩爱,苹果情侣手机壳让你甜到掉牙

    对于机不离身的年轻人而言,用手机壳来秀恩爱,相信会是一种独特的"撒狗粮"方式.毕竟情侣衣服显得太过时,而手表配饰也没有那么多展露的场景,唯独手机是我们经常要拿出来的物品.当情侣在一 ...

  5. Python表白代码:太秀了,用过的人都找到了对象...【满屏玫瑰盛开】

    导语 暗恋让人受尽委屈!一开始,你是我的秘密,我怕你知道,又怕你不知道,又怕你知道装作不知道! 这大概就是暗恋的感受吧,可若是双向奔赴,那简更是甜蜜度爆表,快同小编吃下这波狗粮! 跟着上一期的玫瑰花花 ...

  6. 2023.6.1每日一题

    在求最小值中的最大值或最大值的最小值时,往往采用二分解决,这道题二分的对象就是甜蜜度.在二分之前首先对price进行升序排序,在二分初始化中:left=0,right=price[n-1]-price ...

  7. 情人节肉麻短信排行榜中榜

    ●如果世界只剩10分钟,我会和你一同回忆走过的风雨,如果世界只剩3分钟,我会深深吻你10次,如果世界只剩1分钟,我会说60次我爱你! 肉麻指数:☆☆☆☆☆ 评论:即使「明天过后」真实版上演,也要跟情人 ...

  8. 甜蜜助攻!情侣之间,到底能有多甜甜甜甜甜甜甜甜

    ▲ 点击查看 没有一丝丝防备,还有 5 天,七夕就要到了. 如何借「物」聊表爱意,大概是最近让很多拥有另一半的人头疼不已的问题. 重点是,礼物挑不好,小心七夕就变送命题! 女孩子们到底喜欢什么礼物? ...

  9. 甜蜜暴击,情人节插画素材,甜而不腻!

    在这么甜的日子里,当然要甜蜜暴击一切,投递甜甜的爱情啊!这个情人节,你会怎么过呢?约会也好,在家也好,都不会减弱彼此的爱.你想象中最美好的爱情是什么样子的? 不同的人有不同的回答,插画里甜而不腻的爱情 ...

最新文章

  1. 图解Windows下使用SSH Secure Shell Client远程连接Linux
  2. php写的微信聊天界面,浅谈 聊天界面 核心架构设计
  3. Office Communication Server(OCS)2007 Communicator Web Access(CWA)的部署
  4. matlab寻找函数对应的工具箱
  5. 我的工作日报 - 2020-9-11 星期五
  6. 云服务器上mysql数据库环境安装配置
  7. html5录音怎么保存到本地,详解HTML5 录音遇到的坑
  8. Solaris上的开发环境安装及设置
  9. iOS中使用URL Scheme进行App跳转
  10. 不允许有匹配 “[xX][mM][lL]“ 的处理指令目标。
  11. java中的耦合_Java中的耦合
  12. python开发板 树莓派_树莓派3代B+型 Raspberry Pi 3b+电脑linux开发板python编程
  13. unbuntu配置scrcpy
  14. 如何用电脑下载微信视频号中的视频?
  15. python提取txt数据到excel
  16. 程序员们逢年过节初一十五都应该祭拜哪些神仙?
  17. 企业技术中心申报条件
  18. 使用python爬取招聘网站数据
  19. java jxl 写 excel文件_Java使用jxl包写Excel文件适合列宽实现
  20. 盲盒拓客商家联盟红包裂变抽奖源码

热门文章

  1. c语言sigsegv解决方法,关于SIGSEGV错误及处理方法(转)
  2. COSCon’22第七届中国开源年会火热筹备中,第一波赞助伙伴已集结,一起上车共赴开源盛宴吧~...
  3. 广西学子复读15年,不服从分配。网友:完全是浪费时间
  4. HTML标签fieldset
  5. 云计算服务商中云融信 十一月产品升级
  6. JavaScript基础 ( 3 章 )
  7. TeeChart VCL/FMX v2023 crack
  8. [乐意黎原创]npm run dev 时抛'cross-env' is not recognized as an internal or external command的解决方法
  9. ubuntu 18.04 安装无线驱动和显卡驱动
  10. c语言1.0.2父母的身高预测未来子女的身高