阅读后可知题意大概为:给定几个时间点,在每一个时间点后的一段时间内Ashe会处于中都的状态,中毒的时间不会累加只会覆盖,求Ashe的总中毒时间。
解题的主要问题在于去掉中毒重复的时间,可以对每一次中毒进行处理,若一次中毒持续的时间到了下次中毒的时间,在总时间上加上两次的时间差,否则则加上一次中毒可持续的最长时间。最后得到的值便是总的中毒时间。
代码如下:
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
if(timeSeries.size()!=0)
{
int count=0;
int x=timeSeries.size()-1;
for(int i=0;i<x;i++)
{
int k1=timeSeries[i];
int k2=timeSeries[i+1];
if(k2>k1+duration-1)
{
count=count+duration;
}
else
{
count=count+k2-k1;
}
}
return count+duration;
}
else
return 0;
}
};