【算法】Maximum Tastiness of Candy Basket 礼盒的最大甜蜜度

这篇具有很好参考价值的文章主要介绍了【算法】Maximum Tastiness of Candy Basket 礼盒的最大甜蜜度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Maximum Tastiness of Candy Basket 礼盒的最大甜蜜度

问题描述:

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

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

返回礼盒的 最大 甜蜜度。

price.length 范围 [ 1 , 1 0 5 ] [1,10^5] [1,105], price[i] 范围 [ 1 , 1 0 9 ] [1,10^9] [1,109],k 范围[2,price.length]

分析

一个礼盒的甜蜜度是由价格差最小的决定的。如果单独考虑一个礼盒计算其甜蜜度tastiness,这个结果一定是在2个相邻的candy之间产生。

如果暴力的处理,就需要暴力去枚举所有可能,这个思路的时间复杂度太高,很明显走不通。

随便选 k k k c a n d y candy candy,打包成为一个礼盒,它的甜蜜度为X,这个x是可以计算,但是目标是要使X最大。

一种方式就暴力,穷举出所有的甜蜜度,找到最大的。
另一种方式就是假设一个甜蜜度X,判断是否存在一个这样的礼盒。

很明显后一种在规模较大的情况下更加合理。

问题就变成是否可以快速找到 k 类 c a n d y ,它的甜蜜度 x > = t a r g e t k类candy,它的甜蜜度x>=target kcandy,它的甜蜜度x>=target.

如果可以找到这个组合,说明 t a r g e t 应该 > = x , 否则 t a r g e t < x − 1. target应该>=x,否则target<x-1. target应该>=x,否则target<x1.很明显是一个二分思路
然后需要解决的就是一个check方法,之前已经说过,影响一个礼盒的甜蜜度,一定是2个相邻的 c a n d y candy candy,所以需要将 p r i c e price price小到大排序
然后再长度 N N N的元素中,找出 k k k个元素,而且相邻之间的差值 d i f f > = t a r g e t diff>=target diff>=target

check的实现方式有很多,可以递归回溯,可以dp,思路就是尽可能的选择更多的元素.

当已经选择的组合中最后的元素为 a [ i − 1 ] a[i-1] a[i1],那么当前元素是否入选,就取决于 c u r − a [ i − 1 ] > = t a r g e t cur-a[i-1]>=target cura[i1]>=target,满足则入选,否则就跳过,基于这个贪心的思路,可以选择出最多的元素组合。

代码

public int maximumTastiness(int[] price, int k) {
        Arrays.sort(price);
        int n = price.length;
        int l = 0,r = price[n-1]-price[0],mid=0;
        while(l<r){
            mid = l + (r-l+1)/2; 
            if(check(price,mid)<k){
                r = mid-1;                
            }
            else{
                l = mid;
            }
        }
        return l; 
    }
    public int check(int[] arr ,int diff){
        int n = arr.length,cnt = 1,pre = arr[0];
        for(int i =1;i<n;i++){
            if(arr[i]-pre>=diff){
                cnt++;
                pre = arr[i];
            }
        }
        return cnt;
    }

时间复杂度 O ( N L o g N + N L o g C ) O(NLogN+ NLogC) O(NLogN+NLogC)
空间复杂度: O ( L o g N ) O(LogN) O(LogN)

Tag

Array Binary sorting文章来源地址https://www.toymoban.com/news/detail-470141.html

到了这里,关于【算法】Maximum Tastiness of Candy Basket 礼盒的最大甜蜜度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode646. Maximum Length of Pair Chain——动态规划

    You are given an array of n pairs pairs where pairs[i] = [lefti, righti] and lefti righti. A pair p2 = [c, d] follows a pair p1 = [a, b] if b c. A chain of pairs can be formed in this fashion. Return the length longest chain which can be formed. You do not need to use up all the given intervals. You can select pairs in any order. Example 1: Input: pairs = [[

    2024年02月22日
    浏览(45)
  • leetcode - 2616. Minimize the Maximum Difference of Pairs

    You are given a 0-indexed integer array nums and an integer p. Find p pairs of indices of nums such that the maximum difference amongst all the pairs is minimized. Also, ensure no index appears more than once amongst the p pairs. Note that for a pair of elements at the index i and j, the difference of this pair is |nums[i] - nums[j]|, where |x| represents th

    2024年02月13日
    浏览(41)
  • LeetCode 1921. Eliminate Maximum Number of Monsters【贪心,计数排序】1527

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,

    2024年02月09日
    浏览(49)
  • LeetCode //C - 1161. Maximum Level Sum of a Binary Tree

    Given the root of a binary tree, the level of its root is 1, the level of its children is 2, and so on. Return the smallest level x such that the sum of all the values of nodes at level x is maximal.   Example 1: Input: root = [1,7,0,7,-8,null,null] Output: 2 **Explanation: ** Level 1 sum = 1. Level 2 sum = 7 + 0 = 7. Level 3 sum = 7 + -8 = -1. So we return

    2024年01月23日
    浏览(50)
  • LeetCode //C - 2130. Maximum Twin Sum of a Linked List

    In a linked list of size n, where n is even, the i t h i^{th} i t h node (0-indexed) of the linked list is known as the twin of the ( n − 1 − i ) t h (n-1-i)^{th} ( n − 1 − i ) t h node, if 0 = i = (n / 2) - 1. For example, if n = 4, then node 0 is the twin of node 3, and node 1 is the twin of node 2. These are the only nodes with twins for n = 4. Th

    2024年01月17日
    浏览(60)
  • leetcode - 1751. Maximum Number of Events That Can Be Attended II

    You are given an array of events where events[i] = [startDayi, endDayi, valuei]. The ith event starts at startDayi and ends at endDayi, and if you attend this event, you will receive a value of valuei. You are also given an integer k which represents the maximum number of events you can attend. You can only attend one event at a time. If you choose to attend

    2024年02月16日
    浏览(78)
  • 【异常】The field file exceeds its maximum permitted size of 1048576 bytes.

    本项目是个Springboot 项目,功能是要做一个文件上传,在测试时发现报错,上传的是一个 word 文件,大小是 1.25MB,报错内容如下: Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes. 详细报错内容如下图

    2024年03月15日
    浏览(43)
  • LeetCode 2496. Maximum Value of a String in an Array【字符串,数组】简单

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,

    2024年02月11日
    浏览(57)
  • IOT chip IPQ9554/IPQ9514 support mesh maximum transfer rate of 4800 Mbps

    Today,  introduce the differences between the two wifi7 chips Chip IPQ9514 IPQ9514 is a wireless network chip launched by Qualcomm, which is mainly used in home routers and small and medium-sized enterprise wireless network devices. Powered by Qualcomm\\\'s Krait architecture, the IPQ9514 features four processor cores with a dominant frequency of 1.4GHz, integ

    2023年04月10日
    浏览(42)
  • The maximum length of cell contents (text) is 32,767 charactersExcel导出单元格长度超长

    一、问题描述 导出excel接口报错,错误信息如下: ava.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32767 characters at org.apache.poi.ss.usermodel.CellBase.checkLength(CellBase.java:309) at org.apache.poi.ss.usermodel.CellBase.setCellValue(CellBase.java:290) 二、定位问题 从错误信息查看源码,定位

    2024年02月16日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包