题目描述:
这道题本来挺简单的,直接模拟就可以,先看别人的代码:
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
if (timeSeries.empty()) return 0;
int res = 0, n = timeSeries.size();
for (int i = 1; i < n; ++i) {
int diff = timeSeries[i] - timeSeries[i - 1];
res += (diff < duration) ? diff : duration;
}
return res + duration;
}
};简单清爽,一目了然,可自己做的时候犯sb了,本来一段一段加上就可以,偏要几段合在一起,然后再考虑各种情况分类处理:
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int n = timeSeries.size();
if(n == 0) return 0;
if(n == 1) return duration;
int i = 1,flag = 0,ans = 0,start,answer;
while(i < n){
if(timeSeries[i] - timeSeries[i-1] < duration){
if(flag == 0){
start = timeSeries[i - 1];
flag = 1;
i++;
if(i == n){
ans += timeSeries[n - 1] - start;
}
}
else{
i++;
if(i == n){
ans +=timeSeries[n - 1] - start;
}
}
}
else{
if(flag == 1){
ans += timeSeries[i - 1] - start + duration;
flag = 0;
i++;
}
else {
i++;
ans += duration;
}
}
}
return ans + duration;
}
};我都不知道我写的什么玩意儿。。乱七八糟写了一堆。写到这里就当提醒自己了,learn a lesson.
本文通过对比两种不同的实现方法,展示了如何使代码更加简洁有效。一种方法复杂繁琐,另一种则直观易懂。文章强调了直接模拟法的重要性,并以此为教训,提醒开发者在编写代码时应追求清晰简洁。

4353

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



