美文网首页
提莫队长,正在待命!——提莫攻击算法的解题笔记

提莫队长,正在待命!——提莫攻击算法的解题笔记

作者: 7hriller | 来源:发表于2018-08-12 12:03 被阅读13次

LC上最近有人出了一道新题,十分有意思,叫做 Teemo Attacking(提莫攻击)。
这道算法题描述的是:

在撸啊撸世界中,提莫的普通攻击(吹箭)自带箭毒伤害,每一次吹箭击中敌人(以下假想敌为艾希),艾希都会受到持续特定时间的箭毒伤害。
但箭毒伤害不会叠加,只会把之前的持续时间结束并立即刷新开始计算持续时间。
问题是给定一个提莫攻击的时间点组成的数组timeSeries,以及固定的箭毒持续时间duration,写出算法计算出艾希一共会受到多少时间的箭毒伤害。

题目还给出了几个用例以提供解释:

例子一:
输入:[1, 4], 2
输出:4
解释:
提莫在时间点1攻击艾希时,箭毒立刻生效并持续2秒;
箭毒持续完成后提莫又在时间点4攻击一次艾希,两次攻击没有箭毒叠加,因此艾希一共受到4秒箭毒伤害。

例子二:
输入:[1, 2], 2
输出:3
解释:
提莫在时间点1攻击艾希,箭毒生效并持续了1秒到达攻击时间点2时,箭毒刷新并重计时2秒,因此一共会受到3秒伤害。

这题被标记为中等难度,但实际上如果理清楚条理,这一题其实可以算简单难度。
我们可以用一次遍历来完成计数。

  1. 使用一个变量保存艾希受到的总伤害时间;
  2. 遍历攻击时间点数组,在每一次攻击时间点进行判断;
  3. 如果上一次攻击的时间点与当前循环的时间点之差大于一个箭毒持续时间,那么就可以直接累加一个持续时间;
  4. 如果这个差小于持续时间,那么累加这两次攻击点的差;
  5. 需要注意的是因为每次循环是与上一次进行比较,在最后一次循环时,也就是最后一次攻击会跳出循环,但这一次攻击必然会造成一个持续时间的箭毒伤害,因此最后还需要加一次再返回。
    以下是具体代码:
public int findPoisonedDuration(int[] timeSeries, int duration) {
        if (timeSeries == null || timeSeries.length == 0 || duration <= 0) return 0;
        int count = 0;
        int start = timeSeries[0];
        for (int i = 0; i < timeSeries.length; i ++) {
            if (timeSeries[i] >= start + duration) {
                count += duration;
            } else {
                count += timeSeries[i] - start;
            }
            start = timeSeries[i];
        }
        count += duration;
        return count;
    }

作为一个ex-LOLer,看到这样的算法题,很感慨,因为玩游戏也可以玩得很有追求。只要你愿意去思考本质。

相关文章

  • 提莫队长,正在待命!——提莫攻击算法的解题笔记

    LC上最近有人出了一道新题,十分有意思,叫做 Teemo Attacking(提莫攻击)。这道算法题描述的是: 题...

  • 2018-11-22 Toast的自定义

    提莫队长正在待命!——Toast的自定义 预期目标效果如图:提莫队长正在送命! FirstBlood:自定义圆角背...

  • 提莫队长正在待命

    下班取完快递回来想到是周末就想着去网咖玩几局游戏,就在去的路上买了份蛋炒粉外加两个绝味鸭头,开完机坐在那开电脑边吃...

  • 提莫队长正在待命

    好久没有画画了 好久没玩lol了 但这次 捡起自己的所爱 慢慢拾起画笔 给自己画一片美好的希望

  • TEEMO

    Captain Teemo on duty 提莫队长正在待命 Hut! Two, three four... ...

  • 提莫,正在待命

    以前总觉得自己是个天才,凡事只要努力就能成功,就能如鱼得水。现在才知道自己的想法有多么的天真。 长大后才明白有些事...

  • 提莫故事(七)庄生我们能不能愉快的玩耍?

    方言 庄生:蝴蝶就是我,我就是蝴蝶。 打扰人家清梦可是很不礼貌的。 提莫:提莫队长正在待命! 王者荣耀世界 街上车...

  • 提莫队长正在送命

  • 亲爱的召唤师,你长大了呀

    “德玛西亚” “德玛西亚万岁” ““是时候表演真正的技术了!” “提莫队长正在待命” “不要怕。我来了 德玛西亚”...

  • 提莫攻击

    在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希进入中毒状态。现在,给出提莫对艾希的...

网友评论

      本文标题:提莫队长,正在待命!——提莫攻击算法的解题笔记

      本文链接:https://www.haomeiwen.com/subject/htksbftx.html