从零开始刷力扣(二)——495:提莫攻击

孤心独饮 等级 938 2 0

分类:数组的遍历

题目描述:

在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。

你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态 示例1:

输入: [1,4], 2
输出: 4
原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。
第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。
所以最终输出 4 秒。

示例2:

输入: [1,2], 2
输出: 3
原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。
但是第 2 秒初,提莫再次攻击了已经处于中毒状态的艾希。
由于中毒状态不可叠加,提莫在第 2 秒初的这次攻击会在第 3 秒末结束。
所以最终输出 3 。

思路

计算两次攻击的时间间隔,如果时间间隔大于duration,则持续时间加上duration,否则持续时间加上攻击间隔

代码实现

/**
 * @param {number[]} timeSeries
 * @param {number} duration
 * @return {number}
 */
const findPoisonedDuration = (timeSeries, duration) => {
    if (timeSeries.length == 0) { // 没有攻击发生
        return 0;
    }
    let res = 0;
    for (let i = 1; i < timeSeries.length; i++) {
        const gap = timeSeries[i] - timeSeries[i - 1]; // 时间间隔
        if (duration > gap) { // 覆盖了gap
            res += gap;
        } else {
            res += duration;
        }
    }
    return res + duration; // 补上最后一次攻击的一个duration
};

运行结果

从零开始刷力扣(二)——495:提莫攻击

收藏
评论区

相关推荐

【干货】Javascript千面之变幻莫测的this指向
相信很多前端人对“this”的指向是很懵逼的,因为this的指向总是变幻莫测,在不同的调用环境中,它的指向总是各不相同。 在面试中,this也是经常考的必考题之一,很多前端老鸟经常会在this这里掉坑。 接下来,看笔者来一层一层的揭开this指向的面纱。 1.事件调用环境中的this指向 <div class"b
从零开始刷力扣(一)——485:最大连续1的个数
分类:数组的遍历 题目描述: 给定一个二进制数组, 计算其中最大连续1的个数。 示例1: 输入: 1,1,0,1,1,1 输出: 3 解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3. 思路 初始化count和maxCount,然后遍历数组,遇见1则count,并且更新与maxCount比较,若比maxCount更大,则更新m
从零开始刷力扣(二)——495:提莫攻击
分类:数组的遍历 题目描述: 在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。 你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态 示例1: 输入: 1,4, 2 输出: 4 原因:
Java中使用HTTP阻塞式调用服务器API
应用场景:前端页面点击刷新,调用服务器A上Java接口,然后A调用服务器B的后台Python接口实时刷新后台数据库。 在这个场景中会涉及到两个问题:异步,Python服务器压力 (一)解决Python服务器压力 如果Python服务器接口不做任何措施,那么可能会有恶意的访问,从而导致该服务器一直刷新后台数据库。 我的解决方式是:服务器B会提供一串字符
PHP发送微信模版消息
业务需求:用户扣除产品消费次数之后发送微信模版消息提醒 业务场景:商户版小程序扫一扫用户二维码,扣除用户某一产品的使用次数 由于商户版小程序和用户版小程序是两个独立的客户端,商户版扣除次数之后,用户版并没有提醒 [微信模版消息下发条件](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2F
2019 力扣杯
给出长度相同的两个字符串:`A` 和 `B`,其中 A\[i\] 和 B\[i\] 是一组等价字符。举个例子,如果 `A = "abc"` 且 `B = "cde"`,那么就有 `'a' == 'c', 'b' == 'd', 'c' == 'e'`。 等价字符遵循任何等价关系的一般规则: * 自反性:'a' == 'a' * 对称性:'a' =
MySQL 可重复读,差点就让我背上了一个 P0 事故
P0 事故:余额多扣! =========== 这是一个真实的生产事件,事件起因如下: 现有一个交易系统,每次产生交易都会更新相应账户的余额,出账扣减余额,入账增加余额。 为了保证资金安全,余额发生扣减时,需要比较现有余额与扣减金额大小,若扣减金额大于现有余额,扣减余额不足,扣减失败。 账户表(省去其他字段)结构如下: CREATE TAB
AJAX与Django
AJAX ---- #### 什么是AJAX? AJAX不是JavaScript的规范,它的缩写:Asynchronous JavaScript and XML,意思就是用JavaScript执行异步网络请求。提交任务之后,不原地等待,直接执行下一行代码,任务的返回通过回调机制。 局部刷新,不整体刷新,而是界面莫个地方局部刷新 #### AJAX原理
Django的日常
\[toc\] Django的日常-AJAX ============== AJAX简介 ------ 首先AJAX是一种无需重新加载整个网页的前提下,能够更新部分网页的技术,他并不是一种新的编程语言,而是一种使用现有标准的新方法,是基于原生JavaScript开发的,他可以用于创建快速动态网页. AJAX最大的特点就是局部刷新以及异步提交,局部刷新
Github惊现标星68K的力扣算法刷题宝典,再也不怕被大厂算法拦路了
写在前面 ==== BAT 等国内的一线名企,在招聘工程师的过程中,对算法和数据结构都会重点考察。但算法易学难精,我的很多粉丝技术能力不错,但面试时总败在算法这一关,拿不到好 Offer。但说实话,数据结构和算法花点时间,**用对方法**,很容易解决。面试官为什么爱问数据结构与算法,**答案很简单**: * 算法能力能够准确辨别一个程序员的技术功底是
JavaScript声明提升
### JavaScript声明提升 声明提升就好像把声明(变量声明和函数声明)从它们所在代码中出现的位置移到了最上面。直觉上我们会以为JavaScript代码是由上到下一行一行执行的,但实际上这并不完全正确,还要考虑声明提升的存在。 题目1: var a = 99; // 全局变量a f();
如何搞定力扣刷题?
好买网(www.goodmai.com)IT技术交易平台前言大家好,我是bigsai,好久不见!今天就给各位小伙伴分享我自己刷题力扣的一些小方法,不一定很有用但是可以参考,祝你更高效的变强!最近在一些群聊、私聊中遇到很多的一个问题就是:刷题,大家也都重视到算法刷题对冲击大厂的重要性,越来越多的人开始卷起来了!BA321C5AFE6864CE60465A0E7

热门文章

从零开始刷力扣(一)——485:最大连续1的个数

最新文章

从零开始刷力扣(一)——485:最大连续1的个数