类别:数组 数组的遍历
题目:
想法:
初始化
sum为艾希的中毒总秒数
j为辅助循环变量,记录每次艾希中毒的结束时间
从头遍历数组
每遍历一个数(代表攻击一次),先加一个duration的中毒时长
若这次的攻击时间timeSeries[i]<=上次攻击后中毒结束的时间,那么中毒总时长需要减去差值
即sum-=j-timeSeries[i]+1
遍历完成,得到中毒总时间(秒)
代码:
C
int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration){
int sum=0;
int i=0;
int j=-1;
while(i<timeSeriesSize){
sum+=duration;
if(timeSeries[i]<=j){
sum-=j-timeSeries[i]+1;
}
j=timeSeries[i]+duration-1;
i++;
}
return sum;
}
Java
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int sum=0;
int i=0;
int j=-1;
while(i<timeSeries.length){
sum+=duration;
if(timeSeries[i]<=j){
sum-=j-timeSeries[i]+1;
}
j=timeSeries[i]+duration-1;
i++;
}
return sum;
}
}