题目描述

官方描述(中文)
2021/12/24每日一题

思路

优先吃有效期最短的果子。

代码

class Solution 
{
public:
    int eatenApples(vector<int>& apples, vector<int>& days) 
    {
		auto res = 0;
        multimap<int, int>nums;
        int index = 0;
        while (index < apples.size() || nums.size())
        {
            if (index < apples.size())
            {
                //把当前日期与有效期加和,进行排序
                nums.insert({ index + days[index], apples[index] });
            }
            for (auto iter = nums.begin(); iter != nums.end(); ++iter)
            {
                //如果当前日志比(结果日期+有效期大,说明已经过期了直接丢掉)
                //果子数小于等于0也丢掉
                if (index >= iter->first || iter->second <= 0)
                {
                    nums.erase(iter);
                    continue;
                }

                //在有效期内,并且果子数大于0
                if (iter->second > 0)
                {
                    --iter->second;
                    ++res;
                    break;
                }
            }
            ++index;
        }
        return res;
    }
};

运行结果

image.png

Q.E.D.