问题描述
简要思路
前缀和,主要是在于判断条件的边界值处理,注意以下两点:
- 从第 0 天开始开始吃糖,所以 favDay 要 + 1
- 会爆 int,要用 long
代码
class Solution {
public:
vector<bool> canEat(vector<int>& candiesCount, vector<vector<int>>& queries) {
int n = candiesCount.size();
int m = queries.size();
vector<bool> answer(m);
vector<long> s(n);
s[0] = candiesCount[0];
for(int i = 1; i < n; i++){
s[i] = s[i-1] + candiesCount[i];
}
for(int i = 0; i < m; i ++){
long favType = queries[i][0];
long favDay = queries[i][1] + 1;
long daily = queries[i][2];
long day = 0;
if(favType == 0) answer[i] = (favDay <= s[favType]);
else if(favDay <= s[favType] && favDay * daily > s[favType - 1]) answer[i] = true;
else answer[i] = false;
}
return answer;
}
};