495. 提莫攻击
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。
当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。
正式地讲,提莫在 t 发起发起攻击意味着艾希在时间区间 [t, t + duration – 1](含 t 和 t + duration – 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。
给你一个 非递减 的整数数组 timeSeries ,其中 timeSeries[i] 表示提莫在 timeSeries[i] 秒时对艾希发起攻击,以及一个表示中毒持续时间的整数 duration 。
返回艾希处于中毒状态的总秒数。
public class Solution { public int FindPoisonedDuration(int[] timeSeries, int duration) { int time = 0; for(int i = 1; i<timeSeries.Length; i++) { if((timeSeries[i] - timeSeries[i-1]) > duration) { time += duration; } else { time += timeSeries[i] - timeSeries[i-1]; } } time = time + duration; return time; } }
比较暴力的思路
我们直接举三个例子
[1,4] 2
我们先做判断4-1是不是大于2
如果大于中毒秒数2那么1秒后中毒时间就一定是2秒
最后加上4秒中毒的2秒
得到结果4秒
[1,2] 2
很显然2-1比2来的小
那么1秒后中毒的秒数就只有1秒
最后加上2秒后中毒的2秒
得到结果3秒
[1,2,3] 2
2-1<2 所以中毒秒数1
3-2<2 所以中毒秒数还是1
最后加上3秒的2
得到结果4
通过这三个例子你大概就能明白这个思路了
不管怎样先从1开始遍历数组
如果两次中毒间隔的秒数比中毒时间大
很显然当前时间就是中毒时间
反之就是两次中毒间隔的秒数
最后加上最后一次中毒的中毒时间
就能够得到总时间