1705. 吃苹果的最大数目
有一棵特殊的苹果树,一连 n 天,每天都可以长出若干个苹果。在第 i 天,树上会长出 apples[i] 个苹果,这些苹果将会在 days[i] 天后(也就是说,第 i + days[i] 天时)腐烂,变得无法食用。也可能有那么几天,树上不会长出新的苹果,此时用 apples[i] == 0 且 days[i] == 0 表示。
你打算每天 最多 吃一个苹果来保证营养均衡。注意,你可以在这 n 天之后继续吃苹果。
给你两个长度为 n 的整数数组 days 和 apples ,返回你可以吃掉的苹果的最大数目。
大佬的做法(原链接见下)
话说关于C#的优先队列问题这个月已经是第二次了
我还是没有研究透 唉cv什么时候才会停止呢
public class Solution { public int EatenApples(int[] apples, int[] days) { int day = 0; int eatenApples = 0; //new个篮子装每天长出来的苹果 (过期日,数量) SortedDictionary<int, int> basket = new SortedDictionary<int, int>(); //还没过生长周期 或者 还有可食用苹果 while (true) { if (day <= days.Length - 1) { if (days[day] > 0 && apples[day] > 0) { int overdueDay = day + days[day] - 1;//过期日 if (basket.ContainsKey(overdueDay)) basket[overdueDay] += apples[day]; else basket.Add(overdueDay, apples[day]); } } //找找是否有可食用的苹果 if (basket.Count() > 0) { if (--basket[basket.FirstOrDefault().Key] == 0) basket.Remove(basket.FirstOrDefault().Key); eatenApples++; } else if (day > days.Length) { break; } //丢掉过期的苹果 basket.Remove(day); day++; } return eatenApples; } } 作者:jzhhh 链接:https://leetcode-cn.com/problems/maximum-number-of-eaten-apples/solution/c-yong-pai-xu-zi-dian-sorteddictionaryda-jl4n/ 来源:力扣(LeetCode) 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。