class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int res = 0;
for(int i = 0; i < timeSeries.size()-1; ++i){
if(timeSeries[i+1] - timeSeries[i] > duration){
res += duration;
}else{
res += timeSeries[i+1] - timeSeries[i];
}
}
return res + duration;
}
};
一、比较相邻两个时间之差与持续时间大小:
a)间隔 > 持续, 此时直接加上持续时间。
b) 间隔 <= 持续, 此时加上间隔时间。
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int res =duration;
for(int i = 0; i < timeSeries.size()-1; ++i){
res += min(timeSeries[i+1] - timeSeries[i] , duration);
}
return res;
}
};
二、每次直接选择加上时间间隔和持续时间的最小值
注意:这两种都需要前后两个 timSeries [ i ] 进行做差,因此最后一个属于特例,不能参加循环,需要重新写,最后一个直接加持续时间就行了,可以从初值或者最终返回值操作。