LintCode 1207. 提莫攻击 JavaScript算法

描述

在LOL中,有一个叫做“提莫”的英雄,他的攻击能够让敌人艾希进入中毒状态。现在给定提莫的攻击时间点的升序序列,以及每次提莫攻击时的中毒持续时间,输出总的艾希中毒态的时间。

假定提莫在每一个具体的时间片一开始就发动攻击,而且艾希立刻中毒。

说明

  • 假定给定时间序列的长度不会超过10000。
  • 假定提莫攻击的时间序列和他的中毒持续时间都是非负整数,不会超过10000000。

样例

- 样例 1:
样例: [1,4], 2
输出: 4
解释: 在第1秒开头, 提莫攻击了艾希,艾希立刻中毒。 
这次中毒持续2秒,直到第2秒末尾。 
在第4秒开头, 提莫又攻击了艾希, 又让艾希中毒了2秒。. 
所以最终结果是4.


- 样例 2:
输入: [1,2], 2
输出: 3
解释:1秒钟开头,  提莫攻击了艾希,艾希立刻中毒。 
这次中毒持续2秒,直到第2秒末尾。
然而,第2秒初,提莫又攻击了艾希,而艾希还处在中毒态。
由于中毒态不会叠加, 所以中毒态会在3秒末停止。 
所以,最终返回3

挑战

显然你可以直接 return a + b,但是你是否可以挑战一下不这样做?(不使用++等算数运算符)

解析

findPoisonedDuration = function (timeSeries, duration) {
    
    
    if (timeSeries == null || timeSeries.length == 0 || duration == 0) {
    
    
        return 0;
    }
    result = 0, start = timeSeries[0], end = timeSeries[0] + duration;
    for (i = 1; i < timeSeries.length; i++) {
    
    
        if (timeSeries[i] > end) {
    
    
            result += end - start;
            start = timeSeries[i];
        }
        end = timeSeries[i] + duration;
    }
    result += end - start;
    return result;
}

运行结果

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/SmallTeddy/article/details/108635684
今日推荐