题目:
给一个数组,再给一个间隔,数组里的都是正整数,表示从该pos开始的duration都会被覆盖。注意:如果在被覆盖的时候遇到新的开始的点,那就会重新从这个点duration覆盖,之前的清空。
并且:注意对于最后一个点的覆盖要加上。
思路:
在每一个节点的时候,有两种选择,一个是走duration,一个是走到next node(当duration注定会走到那里)两者取最小值就可。
code:
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int n=timeSeries.size();
if(n==0)
return 0;
else if(n==1)
return duration;
//因为最后的尾被打了之后,会poisoned
int res=0;
for(int i=1; i<n;i++){
res+= min(duration, timeSeries[i]-timeSeries[i-1]);
}
return res+duration;
}
};