第一版代码:
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int n = timeSeries.size();
if(n==0) return 0;
int res = 0, endTime = timeSeries[0] + duration;
for(int i=1;i<n;i++){
if(timeSeries[i]>endTime){
res += duration; // 攻击之前已解读,吃满
}else{ // 攻击之前未解毒,清CD,重新计算
res += timeSeries[i] - timeSeries[i-1];
}
endTime = timeSeries[i] + duration;
}
res+= duration; // 最后一次吃满
return res;
}
};
优化代码
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int res = 0;
for(int i=1;i<timeSeries.size();i++) res+= min(timeSeries[i]-timeSeries[i-1],duration);
if(timeSeries.size()) res+=duration;
return res;
}
};