力扣495---提莫攻击(英雄联盟)

题目描述
力扣495---提莫攻击(英雄联盟)_第1张图片
示例
力扣495---提莫攻击(英雄联盟)_第2张图片
分析
1:题目需要输出有效的中毒时间之和,当相邻两次攻击时间点之差(即给定数组中前后相邻的两个数)大于等于攻击一次中毒的时间(即输入的数),有效时间逐次加上duration就OK!
2:难点在于,当相邻两次攻击时间点之差小于攻击一次中毒的时间时,会产生重合效果,至于重合多少时间取决于数组前后数字之差和duration的相对大小!
3:分析至此,题目思路想必大家已经很清晰!下面附上我的代码!

代码

var findPoisonedDuration = function(timeSeries, duration) {
    if(timeSeries.length === 0)//当数组为空,即不攻击,返回0.
        return 0;
     var time=0;//声明变量计算总有效时间
for(var i=0;i<timeSeries.length-1;i++){//利用循环对每两个相邻攻击时间之差进行判断
    if(timeSeries[i+1]-timeSeries[i]>=duration){//当相邻两次攻击时间大于等于一次攻击中毒的时间
       time=time+duration;//有效时间加上一次duration
       }else{//当相邻两次攻击时间小于一次攻击中毒的时间
        time=time+timeSeries[i+1]-timeSeries[i];//有效时间增加前后相邻之差
       }
    }
 time += duration;//加上第一次的有效时间(即timeSeries[0])
return time;
};

注意
若对 time=time+timeSeries[i+1]-timeSeries[i];//有效时间增加前后相邻之差本句有疑问,画个线段图就理解了!
本人也觉得非常神奇!增加的有效时间 就是 前后相邻攻击时间之差!
力扣495---提莫攻击(英雄联盟)_第3张图片
温馨提示
仅供做题,生活中可不能攻击,不能暴力,不能!

你可能感兴趣的:(练习题,数据结构,leetcode,算法)