美文网首页算法
2517. 最大甜蜜度

2517. 最大甜蜜度

作者: 红树_ | 来源:发表于2023-05-31 19:06 被阅读0次

LC每日一题,参考2517. 最大甜蜜度

题目

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

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

返回礼盒的 最大 甜蜜度

输入: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 。
输入:price = [1,3,1], k = 2
输出:2
解释:选出价格分别为 [1,3] 的两类糖果。 
礼盒的甜蜜度为 min(|1 - 3|) = min(2) = 2 。
可以证明能够取得的最大甜蜜度就是 2 。
输入:price = [7,7,7,7], k = 2
输出:0
解释:从现有的糖果中任选两类糖果,甜蜜度都会是 0 。

解题思路

  • 排序+二分查找:首先肯定要排序,考虑贪心或二分,二分查找的话找指定甜蜜度,范围为[0,price[n-1]-price[0] ],每次找中间值判断是否能找到满足条件的糖果数。

二分查找

class Solution {
    public int maximumTastiness(int[] price, int k) {
        Arrays.sort(price); //排序后糖果下标改变不影响结果
        //逆向思维 二分查找甜蜜度 检查是否能找到k个满足甜蜜度要求的糖果
        int left = 0,right = price[price.length-1] - price[0];
        while(left <= right) {
            int mid = (left + right) >> 1;
            if(check(price,k-1,mid)) left = mid + 1;
            else right = mid - 1;
        }
        return right;
    }
    boolean check(int[] price,int k,int ans) {
        for(int i = 1,pre = price[0]; i < price.length; i++) {
            if(price[i]-pre >= ans) {
                pre = price[i];
                if(--k == 0) return true;
            }
        }
        return false;
    }
}

复杂度分析

  • 时间复杂度:O(nlogn + nlogC),排序nlogn,二分次数logC,C为最大甜蜜度,二分每次检查是否满足需要n,所以二分时间为nlogC。
  • 空间复杂度:O(nlogn),nprice数组长度,为排序需要的空间。

相关文章

  • LEAN 一下午的爱意来袭

    情侣甜蜜写真 Photography Studio 甜蜜时刻 在LEAN,您将享受的是一种甜蜜,温馨,快乐,一起度...

  • 说好的再次相见,却变成再也不见

    百度上对香槟玫瑰的诠释: 爱上你是我今生最大的幸福,想你是我最甜蜜的痛苦,和你在一起是我的骄傲,没有你的我就像一只...

  • 我的红酒战争

    最大的敌人是媳妇。这不再是爱好,而是意识思想的冲突。不过,也有甜蜜期。

  • 我的红酒战争

    最大的敌人是媳妇。这不再是爱好,而是意识思想的冲突。不过,也有甜蜜期。

  • 李碧华的愿望说的精辟,我的愿望看似随意,您有愿望吗?

    最大的愿望乃不劳而获,财色兼收,坐以待币,醉生梦死。 李碧华 我对自己最大的幸福愿望:花钱随心所欲,生活甜甜蜜蜜...

  • 算法学习笔记——二叉树

    树的基本术语 节点的度:节点拥有的子树数树的度:树内各结点的度的最大值深度:树中结点的最大层次其他术语:叶子(终端...

  • Top K Frequent Elements

    之前写的一个很随意的遍历 k 次取最大值 , 时间复杂度 kn 先排序再取的复杂度 nlogn 用最大堆平均复杂度...

  • 他说错过是最大遗憾(14):甜蜜?

    01 那时候,他们有过短暂的甜蜜。 “登绝顶而临天下,泛扁舟而赏落霞。”他发给她,他说这是他的梦。 “春观夜樱,夏...

  • 2019-12-18

    起点:百度成立 百度(纳斯达克:BIDU),全球最大的中文搜索引擎及最大的中文网站,全球领先的人工智能公司。百度愿...

  • 幸福的味道

    有个懂你的人是世上最大的幸福,最大的幸运!有个懂你的人,心里最温暖;有个懂你的人,心里最甜蜜;有个懂你的人,心里最...

网友评论

    本文标题:2517. 最大甜蜜度

    本文链接:https://www.haomeiwen.com/subject/iebyedtx.html