代码:
class Solution
{
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration)
{
//根据数组中给出的元素的值来进行判断!
//若后面元素-前面元素>d 中了d秒!
// <d 中了差的秒数!
//最后一个元素肯定是完整中了d秒,最后结果加上d即可正确!
int sum=0;
for(int i=1;i<timeSeries.size();i++)
{
int x=timeSeries[i]-timeSeries[i-1];
if(x>duration)
{
sum+=duration;
}
else
{
sum+=x;
}
}
return sum+duration;
}
};
思路:因为攻击之后,其中毒机制会重置!题目给出了数组!里面有攻击的时间!还给了一个变量dur,表示持续时间!所以可以根据此规律可以得出,若两次间隔时间>=dur的时候,实际上中毒了dur秒,否则就是中毒了nums[i]-nums[i-1]秒!从数组下标为1开始判断!最后那一次无需进行判断!因为是最后一次,所以一定中毒了dur秒!根据此思路即可求解!