文章目录

  • 1. 题目
  • 2. 解题

1. 题目

有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。
在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。
也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。

你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。

给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大数目

示例 1:
输入:apples = [1,2,3,5,2], days = [3,2,1,4,2]
输出:7
解释:你可以吃掉 7 个苹果:
- 第一天,你吃掉第一天长出来的苹果。
- 第二天,你吃掉一个第二天长出来的苹果。
- 第三天,你吃掉一个第二天长出来的苹果。过了这一天,第三天长出来的苹果就已经腐烂了。
- 第四天到第七天,你吃的都是第四天长出来的苹果。示例 2:
输入:apples = [3,0,0,0,0,2], days = [3,0,0,0,0,2]
输出:5
解释:你可以吃掉 5 个苹果:
- 第一天到第三天,你吃的都是第一天长出来的苹果。
- 第四天和第五天不吃苹果。
- 第六天和第七天,你吃的都是第六天长出来的苹果。提示:
apples.length == n
days.length == n
1 <= n <= 2 * 10^4
0 <= apples[i], days[i] <= 2 * 10^4
只有在 apples[i] = 0 时,days[i] = 0 才成立

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-number-of-eaten-apples
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

参考大佬:https://leetcode-cn.com/problems/maximum-number-of-eaten-apples/solution/c-you-xian-dui-lie-mo-ni-by-fdl-kdvx/

  • 优先队列,贪心,先过期的先吃
typedef pair<int,int> pii;
struct cmp
{bool operator()(pii& a, pii& b) const{return a.first > b.first;//小的,先过期的优先吃}
};
class Solution {public:int eatenApples(vector<int>& apples, vector<int>& days) {priority_queue<pii,vector<pii>, cmp> q;//pair 过期时间,剩余的果子数量int eat = 0, n = apples.size();for(int i = 0; i < n || !q.empty(); i++) {while(!q.empty() && q.top().first==i)//苹果过期了,删除q.pop();if(i < n && apples[i] > 0)//当前的苹果加入优先队列q.push({i+days[i], apples[i]});if(!q.empty()){pii t = q.top();q.pop();eat++;//吃一个if(--t.second > 0)//这一堆还没吃完q.push(t);}}return eat;}
};

892 ms 46.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1705. 吃苹果的最大数目(优先队列)相关推荐

  1. LeetCode - 1705 吃苹果的最大数目

    目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 1705. 吃苹果的最大数目 - 力扣(LeetCode) 题目描述 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果.在 ...

  2. LeetCode - 1705 - 吃苹果的最大数目 - Java - 细节~

    文章目录 题目 题目解析 解题方法 : 贪心思想 + 优先队列 来跟着我一步步看,怎么实现这个代码 第一步: 创建 三个变量 和 new 一个 PriorityQueue(优先队列),并制定该队列,每 ...

  3. 1705. 吃苹果的最大数目(贪心、优先队列(堆)、哈希表),总之先吃快烂的苹果

    1705. 吃苹果的最大数目 题干 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果.在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 ...

  4. 模拟卷Leetcode【普通】1705. 吃苹果的最大数目

    1705. 吃苹果的最大数目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果.在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i ...

  5. 【每日一题】 1705. 吃苹果的最大数目

    [每日一题] 1705. 吃苹果的最大数目 避免每日太过咸鱼,一天搞定一道LeetCode算法题 一.题目描述 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果.在第 i 天,树上会长出 a ...

  6. 【力扣】1705. 吃苹果的最大数目

    1705. 吃苹果的最大数目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果.在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i ...

  7. 1705. 吃苹果的最大数目

    链接:1705. 吃苹果的最大数目 题解: class Solution { public:typedef std::pair<int, int> pii;int eatenApples( ...

  8. 1705. 吃苹果的最大数目(贪心算法)

    1705. 吃苹果的最大数目 难度中等104 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果.在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也 ...

  9. 力扣1705——吃苹果的最大数目(贪心+优先队列)

    思路 对于此类有deadline的问题,首先想到贪心,直到deadline之前再做,这样才能为其他尽可能留出时间,才能做得更多. 首先想到的是按deadline排序,然后依次倒序在deadline前吃 ...

最新文章

  1. tensorflow学习(4.loss函数以及正则化的使用 )
  2. CentOS 7 搭建CA认证中心实现https取证
  3. 作者:邓景文(1982-),女,中国联合网络通信集团有限公司电子商务部工程师...
  4. python3.7shell显示行数_XShell远程CentOS7,Python3命令行下按方向键出现的乱码问题...
  5. gateface php,XAMPP下载-Xampp(PHP环境套件)V8.01 官方win版-ucbug软件站
  6. 【关于NAT64的实现】
  7. 《数学之美》读书笔记和知识点总结
  8. js设计程序实现摄氏度和华氏度转换
  9. 阿里巴巴与山东省人民政府签署战略合作协议
  10. 算法研究之二叉树小球下落
  11. 看的懂的scipy.sparse.csr_matrix和scipy.sparse.csc_matrix
  12. [Android]如何做一个崩溃率少于千分之三噶应用app(7)-跨module交互
  13. 名编辑电子杂志大师教程 | 制作好的电子杂志如何输出以及发布?
  14. android:拍照或从相册选取图片
  15. Xamarin指南针
  16. 体会extends与implements的区别
  17. MySQL(InnoDB剖析):53---性能调优之(CPU的选择、内存的重要性、磁盘对数据库性能的影响)
  18. 【JS】问号点(?.)
  19. java 实现excel中上下角标处理实现原理
  20. Salesforce CRM系统排名?Salesforce CRM办公系统怎么选?什么是用户口碑最好的Salesforce CRM系统?

热门文章

  1. windows无法访问指定设备路径或文件_完全免费的文件数据恢复工具:Microsoft Windows File Recovery...
  2. 大数据之Spark集群安装及简单使用
  3. VS2010调试快捷键
  4. linux 检测蓝牙 rssi,树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)...
  5. 第二季1:图像基础知识
  6. Newtonsoft.Json 获取匿名类数据
  7. c语言错误解析-变量声明
  8. 将一个java工程导入到myeclipse应该注意的地方
  9. 开源的excel读取库libxls在windows下的编译,且支持中文,全网首发
  10. jquery选中以什么开头的元素