输入一个存储攻击时间的数组和攻击效果持续时间,要求输出攻击总的持续时间。注意不计算重复时间。
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int time=0;
decltype(timeSeries.size()) size=timeSeries.size();
if(!timeSeries.empty()){
for(decltype(size) i = 0; i != size-1; ++i)
if(timeSeries[i]+duration>timeSeries[1+i])
time+=(timeSeries[i+1]-timeSeries[i]);
else time+=duration;
time+=duration;
return time;
}
else return 0;
}
问题的关键是比较持续时间和攻击间隔时间的大小,注意最后1次不需要进行迭代,否则下标访问会超出范围,造成未知错误。