目录
🚩题目解析
🚩算法原理
🚩实现代码
🚩题目解析
输入:timeSeries = [1,4], duration = 2
输出:4
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。
艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4 。
输入:timeSeries = [1,2], duration = 2
输出:3
解释:提莫攻击对艾希的影响如下:
- 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
- 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。
艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒是 3 。
🚩算法原理
我们可以看到1 是如果俩次攻击的时间之差是1(前提是俩者相减小于duration)
我们看到俩次攻击时间之差是duration(前提是俩者相减大于等于duration)。3和7的差距是大于duration,所以可以中毒dauration秒。
结论:
中毒时间记为ret,相邻俩数之差为x
给定一个非递减的数组
数组相邻俩者之差x>=duration ret+=duration
数组相邻俩者之差x<duration ret+=x
🚩实现代码
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int n=timeSeries.size();
int ret=0;
for(int i=1;i<n;i++)
{
if(timeSeries[i]-timeSeries[i-1]>=duration){
ret+=duration;
}
else{
ret+=(timeSeries[i]-timeSeries[i-1]);
}
}
ret+=duration;
return ret;
}
};
再学几天就得返校啦.....