制作 m 束花所需的最少天数

题目如下:

给你一个整数数组 bloomDay,以及两个整数 m 和 k 。

现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。

花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。

请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。

做题思路:

首先如果总的花数量小于所需要的花数量直接返回-1;否则无论如何都会有满足的天数。

对于辅助函数的实现,可以遍历数组 ,计算其中的长度为k, 且最大元素不超过设定的值,不重合的连续子数组的数量,如果符合要求的不重合的连续子数组的数量大于或等于 m 则返回 true,否则返回 false。

我们可以使用二分查找,这样就可以避免设定的值太小或者太大,太小的话辅助函数一直返回false,效率很低,太大的话无论如何都是true,导致返回的天数会非常大。

这是实现功能的主要函数,其中复用了辅助函数进行判断

int minDays(vector<int>& bloomDay, int m, int k) {
        if(m > bloomDay.size() / k)
        {
            return -1;
        }
        int low=INT_MAX,high=0;
        int num=bloomDay.size();
        for(int i=0;i<num;i++)
        {
            low=min(bloomDay[i],low);
            high=max(bloomDay[i],high);
        }
        while(low<high)
        {
            int days=(high-low)/2+low;
            if(truee(bloomDay,days,m,k))
            {
                high=days;
            }
            else
            {
                low=days+1;
            }
        }
        return low;
    }

辅助函数中主要是对数组中连续的花朵天数进行判断,如果符合要求则返回true。

bool truee(vector<int>& bloomDay,int days,int m,int k)
    {
        int num=0;
        int sum=0;
        int sizes=bloomDay.size();
        for(int i=0;i<sizes&&num<m;i++)
        {
            if(bloomDay[i]<=days)
            {
                sum++;
                if(sum==k)
                {
                    num++;
                    sum=0;
                }
            }
            else{
                sum=0;
            }
        }
        return num>=m;
    }

相关推荐

  1. 制作 m 最少天数

    2024-04-26 10:26:04       13 阅读
  2. 力扣1482.制作m最少时间

    2024-04-26 10:26:04       8 阅读
  3. pyansys环境配置(安装库)

    2024-04-26 10:26:04       37 阅读
  4. CMake在Ubuntu中找不到GoogleTest

    2024-04-26 10:26:04       47 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 10:26:04       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 10:26:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 10:26:04       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 10:26:04       20 阅读

热门阅读

  1. 【C语言】求一个数的所有质数因子并排序

    2024-04-26 10:26:04       13 阅读
  2. 【Nginx】Nginx 最新社区稳定版-1.26.0-发布

    2024-04-26 10:26:04       12 阅读
  3. 离开A页面时,取消A页面的axios接口数据请求

    2024-04-26 10:26:04       14 阅读
  4. Python和C++音调音符规划和算法

    2024-04-26 10:26:04       32 阅读
  5. 力扣795.区间子数组个数 | 树状数组解法

    2024-04-26 10:26:04       12 阅读
  6. 磨损对输送带安全的影响

    2024-04-26 10:26:04       33 阅读
  7. C#中的LINQ(Language-Integrated Query)

    2024-04-26 10:26:04       14 阅读
  8. 二叉树层次遍历

    2024-04-26 10:26:04       19 阅读
  9. 分布式与微服务区别?

    2024-04-26 10:26:04       11 阅读
  10. npm cnpm pnpm yarn 有什么区别? 哪个更好用呢?

    2024-04-26 10:26:04       15 阅读
  11. sklearn混淆矩阵的计算和seaborn可视化

    2024-04-26 10:26:04       19 阅读
  12. springboot+Vue实现分页

    2024-04-26 10:26:04       13 阅读