难度中等106收藏分享切换为英文关注反馈
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。
你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态
这里我用了双指针来指向数组,用T来定义当前时间,s来记录中毒总时长。
如果当前时间在当前指向的数组内容之前,则加上中毒持续时间到总时长;
s+=duration;
如果当前时间在当前指向的数组内容之后,则减去重合部分,再加上不重合的部分。
q=duration-T+timeSeries[i]-1;
s+=q;
int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration){
int s=0,T=-1,q=0;
for(int i=0;i<timeSeriesSize;i++){
if(T<timeSeries[i]){
s+=duration;
}
else if(T>=timeSeries[i]){
q=duration-T+timeSeries[i]-1;
s+=q;
}
T=timeSeries[i]+duration-1;
//printf("%d %d %d\n",q,s,T);
}
return s;
}