
第一版代码:
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int n = timeSeries.size();
if(n==0) return 0;
int res = 0, endTime = timeSeries[0] + duration;
for(int i=1;i<n;i++){
if(timeSeries[i]>endTime){
res += duration; // 攻击之前已解读,吃满
}else{ // 攻击之前未解毒,清CD,重新计算
res += timeSeries[i] - timeSeries[i-1];
}
endTime = timeSeries[i] + duration;
}
res+= duration; // 最后一次吃满
return res;
}
};
优化代码
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int res = 0;
for(int i=1;i<timeSeries.size();i++) res+= min(timeSeries[i]-timeSeries[i-1],duration);
if(timeSeries.size()) res+=duration;
return res;
}
};
本文提供了一种计算连续中毒时间内总中毒时间的方法。通过两段代码对比,展示了如何优化算法实现,减少时间复杂度,提高程序效率。
475

被折叠的 条评论
为什么被折叠?



