代码:
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秒!根据此思路即可求解!