题目

在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。
当提莫攻击艾希,艾希的中毒状态正好持续 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 <= 10^4
    0 <= timeSeries[i], duration <= 10^7
    timeSeries 按 非递减 顺序排列
    来源:力扣(LeetCode)

解题思路

  这个题目给定了时间点,按照题目的意思是一个时间点算一个单位时间长度,由于中毒时间会覆盖,所以重复的时间点不能重复计入总数,由此我们诞生了一个比较直接的想法,由于给定的时间序列是单调的所以时间不会重复因此可以用set来存储中毒的时间点,即便有重复时间我们也只统计一次中毒的时间点,但由此导致的结果可能是超时。

class Solution:def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:temp=set()for i in timeSeries:for j in range(i,i+duration):temp.add(j)return len(temp)


  因此我们可以尝试通常的一边扫描统计中毒时间。在两个相邻的时间点之间发生的不同情况需要逐一分析,如果在上个时间点产生的中毒效果不能延长至当前时间点,我们就只统计duration的时间长度,否则,统计当前时间点之前以及上一个时间点(包含)之后的时间,这样就能很好的统计出一个序列的时间。

class Solution:def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:count=0for i in range(1,len(timeSeries)):if timeSeries[i-1]+duration-1>=timeSeries[i]:count+=timeSeries[i]-timeSeries[i-1]else:count+=durationreturn count+duration

LeetCode简单题之提莫攻击相关推荐

  1. LeetCode每日一题495. 提莫攻击

    495. 提莫攻击 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄.他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态. 当提莫攻击艾希,艾希的中毒状态正好 ...

  2. Leetcode 每日算法一题*****#495. 提莫攻击

    2019独角兽企业重金招聘Python工程师标准>>> Question: 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄 ...

  3. LeetCode每日一题-495.提莫攻击

    LeetCode495. 提莫攻击 题目链接地址 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄.他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态. 当提 ...

  4. 力扣495题:提莫攻击

    题目描述:在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态.现在,给出提莫对艾希的攻击时间序列和提莫攻击的 ...

  5. 每日一题:提莫攻击(11-10)

    感谢Cloyir的无私奉献,这里给出原文链接,以下内容是其原文的转载. 题目:提莫攻击 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄.他的攻击可以让敌方英雄艾希( ...

  6. 【算法千题案例】⚡️每日LeetCode打卡⚡️——60.提莫攻击

  7. LeetCode简单题之基于排列构建数组

    题目 给你一个 从 0 开始的排列 nums(下标也从 0 开始).请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans ...

  8. LeetCode简单题之Excel 表中某个范围内的单元格

    题目 Excel 表中的一个单元格 (r, c) 会以字符串 "" 的形式进行表示,其中: 即单元格的列号 c .用英文字母表中的 字母 标识. 例如,第 1 列用 'A' 表示, ...

  9. LeetCode简单题之增量元素之间的最大差值

    题目 给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 ...

最新文章

  1. 你的厨房被水淹了!别担心,这只是3D深度估计做出的特效
  2. python 操作txt 写入列表
  3. linux添加硬盘分区设置柱面,linux 下添加新硬盘设备和硬盘分区格式化挂载使用磁盘配额限制...
  4. Orion算法:GOOGLE干掉百度的核武器?
  5. blp模型 上读下写_Golang 并发模型系列:1. 轻松入门流水线模型
  6. 大学期末c语言作业演示,大学C语言期末考试练习题(带详解答案)
  7. 《ASP.NET Core 微服务实战》-- 读书笔记(第1章 、第2章)
  8. redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本
  9. oracle 查看当前登录用户和所有用户
  10. leetcode 整数反转
  11. php tokenizer获取所有类,PHP Tokenizer 学习笔记
  12. 线性表的链式存储——单链表的遍历与优化
  13. CAS(Compare And Swap) 详解
  14. 性能测试常用的linux命令
  15. 使用Windows Server 2003搭建ASP网站001
  16. Matlab —— 电路仿真
  17. PHP操作MySQL数据库常用函数
  18. js中this是什么?this的5种用法
  19. java地铁最短距离_地铁线路最短路径
  20. 目标检测学习笔记-3D摄像头与 2D摄像头区别

热门文章

  1. APP界面控件中英文名称汇总
  2. RxJava(八)Disposable和Transformer
  3. G冰分布(0.0以上)
  4. java框架有哪些常用框架?
  5. opencv#4 手写体识别:自建训练集完美
  6. 外资公司注销流程有哪些
  7. 售后客服常用话术快捷发送怎么操作?
  8. 先知 | 2040年,你会选择住在火星?月球?还是这里?
  9. 网易云信 7 周年丨服务超过 150 万开发者,消息量突破 20000 亿条
  10. 【计算机毕业文章】电动车智能充电服务平台