​LeetCode解法汇总2517. 礼盒的最大甜蜜度

news2024/11/21 11:01:35

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你一个正整数数组 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

解题思路:

* 解题思路:
* 对数组进行排序,就可以知道两两之间的差值。
* 最大的差值就是price[price.length-1] - price[0]=right。最小的差值假设就是left。
* 求最大甜蜜度时,我们使用二分查找,首先尝试middle = (left + right)/2是否可行,
* 如果可行,则继续尝试首先尝试(middle+1+right)/2
* 如果不可行,则继续尝试(left+middle-1)/2

代码:

class Solution {
public:
    /**
 * 看sweetValue是否满足要求
 */
bool check(vector<int> &price, int k, int sweetValue)
{
    int leftIndex = 0;
    for (int i = 0; i < price.size(); i++)
    {
        int sum = price[i] - price[leftIndex];
        if (sum >= sweetValue)
        {
            leftIndex = i;
            k--;
        }
        if (k == 0)
        {
            return true;
        }
    }
    return false;
}

int maximumTastiness(vector<int> &price, int k)
{
    sort(price.begin(), price.begin() + price.size());
    int abs = 0;
    int left = 0;
    int right = price[price.size() - 1] - price[0];
    while (left <= right)
    {
        int middle = (left + right) / 2;
        if (check(price, k - 1, middle))
        {
            left = middle + 1;
            abs = middle;
        }
        else
        {
            right = middle - 1;
        }
    }
    return abs;
}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/597362.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RocksDB笔记 -- 整体架构

RocksDB是由Facebook开发的存储引擎, 它最初的目标是用于快速存储, 特别是Flash存储. 一个基于C开发keys-values存储引擎库. 整体架构 RocksDB由这三个基本结构组成: memtable, sstfile 和 logfile. 其中: memtable是一个内存数据结构, 新的写入会插入到memtable中, 同时可选…

前端加密对抗——CDP远程调用Debug断点函数python代码实现

文章目录 前端加密对抗——CDP远程调用Debug断点函数python代码实现实现请求断点处函数mitmproxy实现加解密 前端加密对抗——CDP远程调用Debug断点函数python代码实现 前几天看了看tools推送的前端加密的文章&#xff1a;前端加密对抗Part2-通过CDP远程调用Debug断点函数觉得…

NR 5G 系统消息MIB和SIB详解

系统信息分类 系统信息与各个信道的映射图示&#xff1a; 在5G高层中&#xff0c;系统信息可以分为三类&#xff1a; 最少系统信息&#xff08;Minimum System Information&#xff0c;MSI&#xff09;&#xff1a; MSI包括MIB和RMSIMIB的RRC消息 MasterInformationBlockMI…

DTU902 工控机 边缘计算网关

边缘计算网关&#xff08;Edge Computing Gateway&#xff09;是一种连接边缘设备和云端服务器的中间件设备&#xff0c;它可以处理和存储大量的数据&#xff0c;提高数据处理和传输的效率。边缘计算网关可以将数据预处理和过滤&#xff0c;减少数据传输到云端的负荷&#xff0…

2023 最新版IntelliJ IDEA 2023.1创建Java Web前(vue3)后端(spring-boot3)分离 项目详细步骤(图文详解)

文章目录 &#x1f6a9; 接上篇&#x1f3f3;‍&#x1f308; 项目构建所需的相关工具JavaIDEAmavenNodeJSVueVisual Studio Code &#x1f30c; 后端项目创建详细步骤&#x1f6eb; 1、开始创建新项目&#x1f6eb; 2、输入项目名称、选择项目存储位置、项目管理工具&#xff…

HTTP 教程1

HTTP 协议一般指 HTTP&#xff08;超文本传输协议&#xff09;。 超文本传输协议&#xff08;英语&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议&#xff0c;是因特网上应用最为…

CPO技术重塑光模块:行业变革与突破

随着OpenAI的ChatGPT重磅面世&#xff0c;在短短时间内&#xff0c;内容生成式人工智能消费级应用掀起一波新的科技浪潮。ChatGPT用户数也在短短两个月内破亿,成为史上活跃用户破亿速度最快的软件。 可以预料的是,未来算力和数据需求将迎来爆发式的增长,且传统可插拔光模块技术…

3.2 动态规划算法的基本要素

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 学习目标&#xff1a; 如果我要学习动态规划算法的基本要素&#xff0c;我会采取以下步骤&#xff1a; 1. 理解概念&#xff1a;首先&#xff0c;我会研…

【程序】基于matlab使用脉冲压缩估计范围和多普勒

一、前言 本例显示了脉冲压缩的效果&#xff0c;其中发射的脉冲被调制并与接收的信号相关联。雷达和声纳系统使用脉冲压缩&#xff0c;通过缩短回波持续时间来提高信噪比&#xff08;SNR&#xff09;和距离分辨率。此示例还演示了多普勒处理&#xff0c;其中目标的径向速度由目…

Windows10系统下YOLOv5配置(Tesla P40 24GB、CUDA10.2)

操作系统&#xff1a;Windows10 显卡&#xff1a;Tesla P40 24GB CUDA版本&#xff1a;10.2 YOLOv5版本&#xff1a;4.0 一、下载 CUDA&cuDNN 下载相应版本的CUDA按默认一路安装到底 下载相应版本的cuDNN&#xff0c;解压&#xff0c;将bin中、include中、lib中文件…

CV | ⑩分钟实现视频人脸情绪生成(论文+代码)

本博客主要讲解了Emotionally Enhanced Talking Face Generation&#xff08;情感增强的谈话人脸生成&#xff09;论文概括与项目实现&#xff0c;以及代码理解。 Emotionally Enhanced Talking Face Generation Paper :https://arxiv.org/pdf/2303.11548.pdf Code: GitHub - s…

java民俗传统文化宣传分享网站springboot+vue

本传统文化网站有管理员和用户两个角色&#xff0c;管理员有&#xff0c;个人中心&#xff0c;用户管理&#xff0c;文章类型管理&#xff0c;文章信息管理&#xff0c;投票信息管理&#xff0c;留言板管理&#xff0c;系统管理。用户有个人中心&#xff0c;我的收藏&#xff0…

C++数据结构:二叉树之三(二叉搜索树扩展)

文章目录 前言一、搜索父节点二、搜索子节点三、搜索前驱后继节点四、计算二叉树的高度五、测试总结 前言 我们接着写二叉树&#xff0c;在前文链接&#xff1a;《二叉树之二》中&#xff0c;我们生成了如下的有序二叉树&#xff0c;并且实现了插入、删除和四种遍历方法。今天…

搭建 LNMP平台

搭建LNMP平台 一. 安装Nginx服务1.1 安装依赖包1.2 创建运行用户1.3 编译安装1.4 优化路径1.5 添加 Nginx 系统服务 二. 安装mysql服务2.1 安装Mysql环境依赖包2.2 创建运行用户2.3 编译安装2.4 修改mysql 配置文件2.5 更改mysql安装目录和配置文件的属主属组2.6 设置路径环境变…

C进阶:数据在内存中的存储(2)

六一儿童节快乐哇各位过期的小朋友们 引入&#xff1a; 在上一篇博文中&#xff0c;相信大家对于数据类型以及整数在内存中的存储有了一定了解&#xff0c;那么&#xff0c;浮点数是怎么在内存中存储的呢&#xff1f;下面来看一下我的讲解。 浮点数家族&#xff1a; 包括&#…

Python四则运算“计算器”——整数口算练习“小程序”

设定练习题目数量、最大取值整数数&#xff0c;即时判定&#xff0c;答对鼓励答错打印正确结果。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简…

python 1B 之路径

1. 绝对路径&#xff1a; os.path.abspath("") 翻译过来就是通过操作系统找到路径-绝对路径&#xff0c;os是operation system&#xff0c; abspath 是absolute path 比如现在运行的文件在service文件夹中&#xff0c;运行后&#xff1a; 2. 上层目录&#xff1a; 方…

快来,一起复习一下JDK动态代理和CGLib动态代理的区别

背景 工作也有四年了&#xff0c;基础的东西许久不看有些遗忘。一起来复习一下吧 JDK动态代理和CGLib的区别 JDK动态代理主要是针对类实现了某个接口&#xff0c;AOP则会使用JDK动态代理。它基于反射的机制实现&#xff0c;生成一个实现同样接口的一个代理类&#xff0c;然后…

MongoDB 学习

文章目录 前言1、MongoDB 的优势是什么2、部署2.1、Windows 系统中的安装启动2.2、Shell连接&#xff08;mongo命令&#xff09;2.3、Compass-图形化界面客户端2.4、Linux系统中的安装启动和连接 3、基本常用命令3.1、选择和创建数据库3.2、数据库删除3.3、集合操作3.3.1、集合…

HEVC预测编码介绍

介绍 ● 一幅图像内邻近像素之间有着较强的空间相关性&#xff0c;相邻图像之间也有很强的时间相关性&#xff1b; ● 预测编码&#xff08;Prediction Coding&#xff09;是指利用已编码的一个或几个样本值&#xff0c;根据某种模型或者方法&#xff0c;对当前的样本值进行预…