每日一题 leetcode 1705. 吃苹果的最大数目 java题解

平安夜快乐🤶 外面的热闹与我无关,我只觉得他们吵闹。

题目

https://leetcode-cn.com/problems/maximum-number-of-eaten-apples/

代码

class Solution {
    public int eatenApples(int[] apples, int[] days) {
        PriorityQueue<int[]> queue=new PriorityQueue<>((a,b)->(a[0]-b[0]));//按日期排序
        int n=apples.length;
        int time=0;
        int res=0;
        while(time<n||!queue.isEmpty()){//还在长苹果 或者 队列不为空
            //加入今天长的苹果
            if(time<n&&apples[time]>0){
                queue.add(new int[]{time+days[time]-1,apples[time]});//最晚能食用的时间,苹果数量
            }
            //扔掉过期苹果
            while(!queue.isEmpty()&&queue.peek()[0]<time){
                queue.poll();
            }
            //今天吃苹果
            if(!queue.isEmpty()){
                int[] cur=queue.poll();//弹出最快过期的
                cur[1]--;//吃一个
                res++;
                if(cur[1]>0){//吃了一个还有
                    queue.add(cur);
                }
            }
            time++;
        }
        return res;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值