題目描述:
這道題本來挺簡單的,直接模擬就可以,先看別人的代碼:
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.