Leetcode——495. 提莫攻击

简介: Leetcode——495. 提莫攻击

目录


  • 1、题目
  • 2、题目分析
  • 3、题解代码


正文


1、题目


题目链接:Leetcode——495. 提莫攻击


在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。正式地讲,提莫在 t 发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束 前 再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。


给你一个 非递减 的整数数组 timeSeries ,其中 timeSeries[i] 表示提莫在timeSeries[i] 秒时对艾希发起攻击,以及一个表示中毒持续时间的整数duration。返回艾希处于中毒状态的 总 秒数


示例 1:

输入:timeSeries = [1,4], duration = 2

输出:4

解释:提莫攻击对艾希的影响如下:


  • 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
  • 第 4 秒,提莫再次攻击艾希,艾希中毒状态又持续 2 秒,即第 4 秒和第 5 秒。
  • 艾希在第 1、2、4、5 秒处于中毒状态,所以总中毒秒数是 4 。


示例 2:

输入:timeSeries = [1,2], duration = 2

输出:3

解释:提莫攻击对艾希的影响如下:


  • 第 1 秒,提莫攻击艾希并使其立即中毒。中毒状态会维持 2 秒,即第 1 秒和第 2 秒。
  • 第 2 秒,提莫再次攻击艾希,并重置中毒计时器,艾希中毒状态需要持续 2 秒,即第 2 秒和第 3 秒。
  • 艾希在第 1、2、3 秒处于中毒状态,所以总中毒秒数是 3 。


提示:

1 <= timeSeries.length <= 104

0 <= timeSeries[i], duration <= 107

timeSeries 按 非递减 顺序排列


2、题目分析


此题目有两个关键点值得我们注意:

  • 提莫的每次攻击后可以让寒冰中毒 duration 秒;
  • 如果寒冰当前处于中毒状态,提莫再次攻击,则中毒维持的时间从当前重新计算

所以说我们重点要解决的问题就是当寒冰再次中毒的时候,上一次中毒有没有结束

  • 当上次中毒结束的情况,上次中毒持续的时间就是duration
  • 当上次中毒没有结束,上次中毒持续的时间就是duratio[i]-duration[i-1]
  • 根据duratio[i]-duration[i-1]与duration的大小来判断上次中毒有没有结束,大于等于就是结束了,否则没有结束


3、题解代码


class Solution {
public:
    int findPoisonedDuration(vector<int>& timeSeries, int duration) 
    {
        int res=duration;
        for(auto i=1;i<timeSeries.size();i++)
        {
            if(timeSeries[i]-timeSeries[i-1]>=duration) res+=duration;
            else res+=(timeSeries[i]-timeSeries[i-1]);
        }
        return res;
    }
};


c5eb2d25cb8dc29a77de2bd805f2985a_5ecda5ba75604bab9b2a91178f481e81.png

💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯💯


相关文章
|
7月前
leetcode:495. 提莫攻击
leetcode:495. 提莫攻击
37 0
【Leetcode -495.提莫攻击 -496.下一个更大的元素Ⅰ】
【Leetcode -495.提莫攻击 -496.下一个更大的元素Ⅰ】
48 0
leetcode 1222. 可以攻击国王的皇后(每日一题)
leetcode 1222. 可以攻击国王的皇后(每日一题)
78 0
|
算法 C++ Python
每日算法系列【LeetCode 495】提莫攻击
每日算法系列【LeetCode 495】提莫攻击
108 0
|
算法 Java C#
【算法千题案例】⚡️每日LeetCode打卡⚡️——60.提莫攻击
📢前言 🌲原题样例:提莫攻击 🌻C#方法:一次遍历 🌻Java 方法:一次遍历
【算法千题案例】⚡️每日LeetCode打卡⚡️——60.提莫攻击
|
算法 Java
【leetcode刷题】36.提莫攻击——Java版
⭐欢迎订阅《leetcode》专栏,每日一题,每天进步⭐ 我建议加上攻速,攻击力,生命回复速率,护甲,魔抗,血量,计算在攻击频率下提莫几秒弄死艾希 ——leetcode此题热评
166 0
【leetcode刷题】36.提莫攻击——Java版
|
算法
​LeetCode刷题实战495:提莫攻击
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
116 0
|
3月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
4月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
119 2