阅读后可知题意大概为:给定几个时间点,在每一个时间点后的一段时间内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; }};
新闻热点
疑难解答