当前位置: 首页 > news >正文

力扣2517. 礼盒的最大甜蜜度

在这里插入图片描述
这一题的大意是给出一个数组,表示每一种糖果的价格,现在希望我们能找到k个不同种类的礼盒,每一个礼盒由两个不同种类的糖果组成,礼盒的甜蜜度则是由这两类糖果的价格之差决定,现在让我们找到最大的甜蜜度,k个种类的礼盒的甜蜜度是所有礼盒甜蜜度中的最小值。
很明显的最大化最小值,用二分答案。
我们假设k个礼盒最大的甜蜜度为x,那么去验证这个x是否是最大的
先对糖果的价格进行排序,这样方便找最大的最小甜蜜度
为啥非要进行排序?
因为如果不排序,那么找任意两个糖果的价格差值只能暴力枚举,很明显会超时
而排序后,我们就可以贪心地想,从最小的价格开始,更容易找到差值最大的两类糖果。
只需要这样写check函数:
我们只需要从左到右遍历,如果出现两种糖果的差是大于x,那么说明cnt++,如果在遍历完之后,有cnt》=k,也就是有超过k个糖果都是大于等于x,那么就会有两种情况:
一种是有存在等于x的,那么恰好是符合假设的,还有一种可能是所有的甜蜜度都是大于x,那么仍然返回true,继续去二分逼近甜蜜度的最大值。
如果cnt<k,那么说明,是存在甜蜜度比x小的,那么最大的最小值就不可能是x,而是这个比x小的甜蜜度。
因此完整代码如下:

class Solution {
public:bool check(int x,vector<int>& price,int k){int pre=price[0];int cnt=1;for(int i=1;i<price.size();i++){if(price[i]-pre>=x){cnt++;pre=price[i];}}if(cnt>=k){return true;}else{return false;}}int maximumTastiness(vector<int>& price, int k) {int l=0;int r=1e9;int ans=0;sort(price.begin(),price.end());while(l<=r){int mid=(l+r)/2;if(check(mid,price,k)){ans=max(ans,mid);l=mid+1;}else{r=mid-1;}}        return ans;}
};

时间复杂度O(nlogn)

http://www.dtcms.com/a/557436.html

相关文章:

  • 哪个网站可以直接做ppt简单网页模板
  • 福州网站建设托管个人网站设计成品下载
  • Android WebView 从入门到最佳实践
  • 青岛公路建设集团有限公司网站好乐买网站推广方式
  • 自定义字段/动态字段的实现方法汇总
  • Python---数据容器(Dict 字典)
  • zabbix实现监控Hadoop、Docker、SSL证书过期时间应用的保姆级实操流程
  • 怎么在网站空间上传文件西地那非口崩片
  • Linux 容器安装 conda 和 pip
  • 中国建设银行企业门户网站wordpress theme 企业
  • k8s问答题(1)
  • 怎么用dw做带登陆的网站北京新网数码信息技术有限公司
  • MySQL 5.7 安装Audit 审计日志插件
  • 【Docker】P5 Docker Compose 实战指南:一键部署 WordPress + MySQL
  • 升鲜宝供应链管理系统-生鲜配送系统_分拣端界面重构设计(一)
  • 网站降权的原因discuz论坛网站做的门户
  • 【GitHub探索】代码开发AI辅助工具trae-agent
  • 绍兴做网站建设公司建设项目竣工验收公告网站
  • 量子计算机操作系统的破晓:中国“本源司南“与全球开源生态全景解析
  • 西安百度推广网站建设k8s wordpress mysqli
  • 计算机网络:Socket编程预备
  • 做网站地图邮什么好处现在的网站前端用什么做
  • 4399自己做游戏网站兰考县住房和城乡建设局网站
  • C++ Opencv 蓝图01(进阶版)
  • PyTorch2 Python深度学习 - 数据集与数据加载
  • 【开题答辩全过程】以 服装定制系统的设计与实现为例,包含答辩的问题和答案
  • 电商网站改版方案深圳建设银行网上银行登录
  • 做presentation的网站金融社区类网站建设
  • 绥中做网站青海西宁制作网站企业
  • 深入理解 Tailwind CSS 的宽高系统(Width Height)