题目
解题思路
//需要考虑的是两种情况:一种是两次攻击时间间隔没有超过中毒持续时间,一种是两次攻击时间间隔超过中毒持续时间,通过if-else分情况即可。
//同样需要考虑的是攻击次数,转换成算法就是timeSeries数组的长度。但同样的考虑情况。只需要创建for循环遍历统计每两次攻击之间的持续时间即可。
//最后再加上最后一次攻击的中毒时间,是一组完整时间。
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int sum = 0;
if (timeSeries == null || timeSeries.length == 0) {
return 0;
}
if (timeSeries.length == 1) {
return duration;
}
for (int i = 1; i < timeSeries.length; i++) {
// 如果两次攻击时间没超过中毒持续时间,中毒总时长 += 攻击间隔,否则,中毒总时长 += 中毒持续时间
if (timeSeries[i] - timeSeries[i -1] < duration) {
sum += timeSeries[i] - timeSeries[i -1];
} else {
sum += duration;
}
}
// 加上最后一次攻击的持续时长
sum += duration;
return sum;
}
}
运行结果如下: