代码拉取完成,页面将自动刷新
同步操作将从 老胡来也/EveryDay 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。
你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。
输入: [1,4], 2
输出: 4
原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。
第 4 秒初,提莫再次攻击艾希,使得艾希获得另外 2 秒中毒时间。
所以最终输出 4 秒。
输入: [1,2], 2
输出: 3
原因: 第 1 秒初,提莫开始对艾希进行攻击并使其立即中毒。中毒状态会维持 2 秒钟,直到第 2 秒末结束。
但是第 2 秒初,提莫再次攻击了已经处于中毒状态的艾希。
由于中毒状态不可叠加,提莫在第 2 秒初的这次攻击会在第 3 秒末结束。
所以最终输出 3 。
/**
* @param {number[]} timeSeries
* @param {number} duration
* @return {number}
*/
var findPoisonedDuration = function(timeSeries, duration) {
var n = timeSeries.length;
if(!n) return 0;
var target = 0;
for(let i=0;i<n-1;++i) {
target += Math.min(timeSeries[i+1] - timeSeries[i], duration);
}
return target + duration;
};
将数组进行一次遍历即可,比较数组中每两个时间节点的差与中毒时间的长短,如果两个节点之间的差比中毒时间短,那么说明中毒的时间会被覆盖,如果节点时间间隔长,那么说明中毒状态会持续duration
时常,那么直接取两者之间小的值即可,首先定义n
取得数组长度,如果长度为0
直接返回0
即可,定义target
为中毒总时间,然后定义循环取得数组中时间节点值之差与中毒持续时间较小的值累加到target
中,最后认为在最后一个节点还会持续中毒duration
市场,所以将target
与duration
相加返回即可。
https://github.com/WindrunnerMax/EveryDay
https://leetcode-cn.com/problems/teemo-attacking
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。