leetcode1705. 吃苹果的最大数目

java:

平安夜 每日一题  贪心+优先队列~谢谢官方题解

class Solution {
    public int eatenApples(int[] apples, int[] days) {
        int ans = 0;
        PriorityQueue<int[]> pq = new PriorityQueue<int[]>((a, b) -> a[0] - b[0]);
        int n = apples.length;
        int i = 0;
        while(i < n){
            while(!pq.isEmpty() && pq.peek()[0] <= i){
                pq.poll();
            }
            int rottenDay = i + days[i];
            int count = apples[i];
            if(count > 0){
                pq.offer(new int[]{rottenDay, count});
            }
            if(!pq.isEmpty()){
                int[] arr = pq.peek();
                arr[1]--;
                if(arr[1] == 0){
                    pq.poll();
                }
                ans ++;
            }
            i ++;
        }
        while(!pq.isEmpty()){
            while(!pq.isEmpty() && pq.peek()[0] <= i){
                pq.poll();
            }
            if(pq.isEmpty()){
                break;
            }
            int[] arr = pq.poll();
            int curr = Math.min(arr[0] - i, arr[1]);
            ans += curr;
            i += curr;
        }
        return ans;
    }
}

PriorityQueue的使用、leetcode前k个高频元素最大堆方法中“((a, b) -> b[1] - a[1])”的解释(java (a, b) -> b[1] - a[1] 是lambda表达式,等价于以下写法}继承Comparator接口,并且实现其中的compare()方法。提示:以下是本篇文章正文内容,下面案例可供参考接口的概念接口不是类,而是对希望符合这个接口的类的一组需求。例如Arrays类中sort方法可以对对象数组进行排序,但对象所属类必须实现Comparable接口}·任何实现Comparable接口的类都需要包含compareTo方法·接口中所有方法都自动是public方法·接口没有实例。 阅读详情

相关推荐

Leetcode1705. 吃苹果最大数目

本题是一个贪心算法的问题,关键在于理解如何维护一个存储未来几天内会坏掉的苹果的数据结构,并据此计算每天可以吃多少苹果。

想要AC的sjh的博客空间 887

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

有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大数目。示例

卷子的博客 1080

力扣1705.吃苹果最大数目

【代码】力扣1705.吃苹果最大数目

Pisasama的博客 395

LeetCode 1705.吃苹果最大数目贪心(优先队列) - 清晰题解

LeetCode 1705.吃苹果最大数目贪心(优先队列) - 清晰题解 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。 给你两个长度

<font color="Pink">Tisfy的博客</font> 1147

24/12/24 力扣每日一题 # 题目解析:1705. 吃苹果最大数目 全网最详细解释

通过合理利用最小堆的特性,我们能够高效地管理苹果的过期时间,确保每次都优先吃掉即将腐烂的苹果,从而最大化吃掉的苹果数量。这道题考察了对优先队列(堆)的应用,以及如何在有限条件下优化资源的使用。掌握了这种思路和技巧,不仅能解决类似的问题,还能提升对数据结构的理解和应用能力。

qq_17405059的博客 1296

Leetcode 1705-吃苹果最大数目

有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大数目

Helene1996的博客 539

LeetCode1705. 吃苹果最大数目(优先级队列 + 贪心 Java

优先级队列维护最早过期的苹果,贪心思路就是每次吃最早过期的水果,最后一定可以吃的最多。注意如果过期或者某一批苹果被吃光时,从队列中poll出来。不过我这里取出某一批,如果吃完后变为0了也不会放进去,两个判断留一个就行。

Cosmoshhhyyy的博客 720

[LeetCode]1705.吃苹果最大数目

[LeetCode]1705.吃苹果最大数目题目示例方法贪心 题目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。 给你两个长度为 n 的整

qq_47875463的博客 456

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

1705. 吃苹果最大数目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。 给你两个长度为 n 的整数数组 days 和 apples ,返

毛毛的博客 3735

leetcode-1705吃苹果最大数目

leetcode-1705吃苹果最大数目题目解题方法一:贪心+优先队列方法二:贪心+MapTree 题目 题目链接 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这

菊头蝙蝠的博客 793

Leetcode 每日一题】1705. 吃苹果最大数目

Leetcode 每日一题 - 吃苹果最大数目

冠位优化 1327

Leetcode-1705. 吃苹果最大数目

链接 1705. 吃苹果最大数目 题目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。 给你两个长度为 n 的整数数组 days

道纪书生的博客 386

leetcode每日一题1705. 吃苹果最大数目 今天你吃苹果了么 【3000天都不会腐烂的苹果哦~】

leetcode每日一题1705. 吃苹果最大数目 今天你吃苹果了么 【3000天都不会腐烂的苹果哦~】 写在前面 终于要到周末了诶,不过今天是周五,除了上课就是复习,所以今天的每日一题就比较晚了耶,不要介意,不过还是需要每天坚持打卡的,那么作为圣诞夜的今天会出什么题呢?emmmm…吃苹果,我透 给了个案例有个苹果3000天才过期,跟我开国际玩笑呢吧?不管了,我先吃了这苹果,各位自便~ 题目 吃苹果最大数目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。 在第 i 天,树上会长出

Alascanfu的博客 294

Leetcode1705吃苹果最大数目

天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用。吃一个苹果来保证营养均衡。天,每天都可以长出若干个苹果。,返回你可以吃掉的苹果的最大数目。有一棵特殊的苹果树,一连。个苹果,这些苹果将会在。

m0_67598823的博客 492

力扣1705. 吃苹果最大数目

题目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。 给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大

(ง •_•)ง没有困难的工作,只有勇敢的狗狗 214

Leetcode 1705.吃苹果最大数目

有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。 给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大

cuiboen1的博客 315

LeetCode 1705. 吃苹果最大数目优先队列

文章目录1. 题目2. 解题 1. 题目 有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。 在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。 也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。 你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。 给你两个长度为 n 的整数数组 days 和 a

Michael是个半路程序员 981

leetcode1705. 吃苹果最大数目

无论何时,只要执行了系统调用或者库函数,检查调用的返回状态以及确定调用是否成功,这是一条编程铁律 系统调用 系统调用是受控的内核入口,借助于这一机制,进程可以请求内核以自己的名义去执行某些动作。 以应用程序编程接口(API)的形式,内核提供有一系列服务供程序访问。这包括创建新进程、执行IO、为进程间调用管道等。手册页syscalls(2)列出了Linux系统调用 在深入系统调用的运作方式之前,务必关注以下几点 系统调用将处理器从用户态切换到核心态,以便CPU访问受到保护的内核内存 系统调用的组成是.

OceanStar的博客 495

【力扣时间】【1705】【中等】吃苹果最大数目

中等贪心题而已,周末了给自己放假吧

山峰 204
上一篇: leetcode1044. 最长重复子串
下一篇: leetcode 70. 爬楼梯(java & python3)
姐姐的半熟芝士
博客等级 码龄7年 28粉丝 · 392原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值