LeetCode简单题之提莫攻击
题目
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。
当提莫攻击艾希,艾希的中毒状态正好持续 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简单题之提莫攻击相关推荐
- LeetCode每日一题495. 提莫攻击
495. 提莫攻击 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄.他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态. 当提莫攻击艾希,艾希的中毒状态正好 ...
- Leetcode 每日算法一题*****#495. 提莫攻击
2019独角兽企业重金招聘Python工程师标准>>> Question: 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄 ...
- LeetCode每日一题-495.提莫攻击
LeetCode495. 提莫攻击 题目链接地址 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄.他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态. 当提 ...
- 力扣495题:提莫攻击
题目描述:在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态.现在,给出提莫对艾希的攻击时间序列和提莫攻击的 ...
- 每日一题:提莫攻击(11-10)
感谢Cloyir的无私奉献,这里给出原文链接,以下内容是其原文的转载. 题目:提莫攻击 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄.他的攻击可以让敌方英雄艾希( ...
- 【算法千题案例】⚡️每日LeetCode打卡⚡️——60.提莫攻击
- LeetCode简单题之基于排列构建数组
题目 给你一个 从 0 开始的排列 nums(下标也从 0 开始).请你构建一个 同样长度 的数组 ans ,其中,对于每个 i(0 <= i < nums.length),都满足 ans ...
- LeetCode简单题之Excel 表中某个范围内的单元格
题目 Excel 表中的一个单元格 (r, c) 会以字符串 "" 的形式进行表示,其中: 即单元格的列号 c .用英文字母表中的 字母 标识. 例如,第 1 列用 'A' 表示, ...
- LeetCode简单题之增量元素之间的最大差值
题目 给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 ...
最新文章
- 你的厨房被水淹了!别担心,这只是3D深度估计做出的特效
- python 操作txt 写入列表
- linux添加硬盘分区设置柱面,linux 下添加新硬盘设备和硬盘分区格式化挂载使用磁盘配额限制...
- Orion算法:GOOGLE干掉百度的核武器?
- blp模型 上读下写_Golang 并发模型系列:1. 轻松入门流水线模型
- 大学期末c语言作业演示,大学C语言期末考试练习题(带详解答案)
- 《ASP.NET Core 微服务实战》-- 读书笔记(第1章 、第2章)
- redis版本_全球首发|阿里云正式推出云数据库Redis6.0版本
- oracle 查看当前登录用户和所有用户
- leetcode 整数反转
- php tokenizer获取所有类,PHP Tokenizer 学习笔记
- 线性表的链式存储——单链表的遍历与优化
- CAS(Compare And Swap) 详解
- 性能测试常用的linux命令
- 使用Windows Server 2003搭建ASP网站001
- Matlab —— 电路仿真
- PHP操作MySQL数据库常用函数
- js中this是什么?this的5种用法
- java地铁最短距离_地铁线路最短路径
- 目标检测学习笔记-3D摄像头与 2D摄像头区别