题目
错误代码
public int findPoisonedDuration(int[] timeSeries, int duration) {
int nums = duration;
for (int i = 0; i < timeSeries.length-1; i++) {
if (timeSeries[i + 1] - timeSeries[i] >= duration)
nums = nums+duration;
else {
int a = timeSeries[i + 1] - timeSeries[i];
nums = nums + duration - a;
}
}
return nums;
}
错误分析
只考虑了与前一次攻击的重合,没有考虑后续的覆盖
正确代码
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int nums = duration;
for (int i = 0; i < timeSeries.length-1; i++) {
nums = nums + Math.min(timeSeries[i+1] - timeSeries[i],duration);
}
return nums;
}
}
正确思路
覆盖只考虑间隔,最后一次攻击为完全没被覆盖。