前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >提莫攻击

提莫攻击

作者头像
WindrunnerMax
发布2020-08-27 16:41:12
3620
发布2020-08-27 16:41:12
举报
文章被收录于专栏:Czy‘s BlogCzy‘s Blog

提莫攻击

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

示例

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

题解

代码语言:javascript
复制
/**
 * @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市场,所以将targetduration相加返回即可。

每日一题

代码语言:javascript
复制
https://github.com/WindrunnerMax/EveryDay

参考

代码语言:javascript
复制
https://leetcode-cn.com/problems/teemo-attacking
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 提莫攻击
    • 示例
      • 题解
        • 思路
          • 每日一题
            • 参考
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档