一.题目解析

有一个数组,里面每一个数字都表示一个攻击的时间,每一次攻击都会造成duration的中毒效果,求最大的中毒时间,在中毒期间再次攻击会重置中毒时间
算法解析


两次攻击间隔>duration,说明中毒可以完整结束,如果<duration,说明中毒重置就只能造成两攻击间隔时间x的中毒
模拟算法考验代码编写的能力,理解过程要自己编写
二.代码编写
cpp
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int rettime=0;
int n=timeSeries.size();
for(int i=0;i<n;i++)
{
if(i==n-1) break;//边界情况
int x=timeSeries[i+1]-timeSeries[i];
if(x>=duration)
{
rettime+=duration;
}
else
{
rettime+=x;
}
}
return rettime+duration;//最后一次中毒一定不会重置
}
};