先上错误答案
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int pbegin=0,result=0,pend=0;
for(;pbegin<timeSeries.size();pbegin++)
{
if(timeSeries[pbegin]>=pend)
{result+=duration;pend=timeSeries[pbegin]+duration;}
else
{result+=timeSeries[pbegin]+duration-pend;}//错在这里没更新中毒结束时间
}
return result;
}
};
更新过后
```cpp
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int pbegin=0,result=0,pend=0;
for(;pbegin<timeSeries.size();pbegin++)
{
if(timeSeries[pbegin]>=pend)
result+=duration;
else
result+=timeSeries[pbegin]+duration-pend;
//这里可以使用result+=timeSeries[pbegin]-timeSeries[pbegin-1];
pend=timeSeries[pbegin]+duration;
}
return result;
}
};
但看了答案这样还是不够好,首先增加了一个pend变量,而且对问题抽象不够;实际这个中毒时间的叠加可以用两个相邻元素之间的差和duration的最大值来累加,最后再加一个duration。
还是思路不清,对问题抽象程度不够
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int result=0,length=timeSeries.size();
if (length==0)
return result;//注意需要判断空数组的情况
for(int i=0;i<length-1;i++)
result+=min(timeSeries[i+1]-timeSeries[i],duration);
return result+duration;
}
};