地址:

5638. 吃苹果的最大数目

状态:AC

代码:注意未获得的苹果暂时不能吃

  1. class Solution {
  2. public:
  3. int eatenApples(vector<int>& apples, vector<int>& days) {
  4. int m = 0;
  5. int ans = 0;
  6. for(int i = 0;i<days.size();i++){
  7. m = max(m,days[i] + i);
  8. }
  9. vector<int> left(m+1,0);
  10. int i=0;
  11. m = 0;
  12. int j = 0;
  13. for(i = 0;i<apples.size();i++){
  14. m = max(m,i+days[i]);
  15. left[i+days[i]] += apples[i];
  16. left[i] = 0;
  17. for(j = i;j<=m&&left[j]==0;j++);
  18. if(j<=m){
  19. left[j]--;
  20. ans++;
  21. }
  22. }
  23. for(;i<left.size()-1;i++){
  24. left[i] = 0;
  25. for(;j<left.size()&&left[j]==0;j++);
  26. if(j<left.size()){
  27. left[j]--;
  28. ans++;
  29. }else{
  30. return ans;
  31. }
  32. }
  33. return ans;
  34. }
  35. };