当前位置: 首页 > news >正文

LeetCode第一天(495.提莫攻击)

题目:

在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。

当提莫攻击艾希,艾希的中毒状态正好持续 duration 秒。

正式地讲,提莫在 t 发起攻击意味着艾希在时间区间 [t, t + duration - 1](含 t 和 t + duration - 1)处于中毒状态。如果提莫在中毒影响结束  再次攻击,中毒状态计时器将会 重置 ,在新的攻击之后,中毒影响将会在 duration 秒后结束。

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

返回艾希处于中毒状态的  秒数。

官解:

我们只需要对数组进行一次扫描就可以计算出总的中毒持续时间。我们记录艾希恢复为未中毒的起始时间 expired\textit{expired}expired,设艾希遭遇第 iii 次的攻击的时间为 timeSeries[i]\textit{timeSeries}[i]timeSeries[i]。当艾希遭遇第 iii 攻击时:

如果当前他正处于未中毒状态,则此时他的中毒持续时间应增加 duration\textit{duration}duration​,同时更新本次中毒结束时间 expired\textit{expired}expired​ 等于 timeSeries[i]+duration\textit{timeSeries}[i] + \textit{duration}timeSeries[i]+duration​;
如果当前他正处于中毒状态,由于中毒状态不可叠加,我们知道上次中毒后结束时间为 expired\textit{expired}expired​​,本次中毒后结束时间为 timeSeries[i]+duration\textit{timeSeries}[i] + \textit{duration}timeSeries[i]+duration​​,因此本次中毒增加的持续中毒时间为 timeSeries[i]+duration−expired\textit{timeSeries}[i] + \textit{duration} -\textit{expired}timeSeries[i]+duration−expired​​;
我们将每次中毒后增加的持续中毒时间相加即为总的持续中毒时间。

class Solution {public int findPoisonedDuration(int[] timeSeries, int duration) {int sum = 0;int expired = 0;for(int i = 0;i < timeSeries.length;++i){if(timeSeries[i] >= expired){sum += duration;}else{sum += timeSeries[i] + duration - expired;}expired = timeSeries[i] + duration;}return sum;}
}

相关文章:

  • 史上最详细的CrossOver24激活和使用教程(附网盘激活码)
  • excel 破解 保护工作簿及保护工作表
  • 树,二叉树与堆
  • 鸿蒙Harmony应用开发—ArkTS-@AnimatableExtend装饰器:定义可动画属性
  • ReaLTaiizor开源.NET winform控件库学习使用
  • uniapp使用Canvas给图片加水印把临时文件上传到服务器
  • 大模型开发中使用prompt提示最佳实践
  • pytorch 鲜见操作
  • web蓝桥杯2022省赛真题:水果拼盘
  • stable-diffusion-electron-clickstart 支持windows AMD显卡
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • vue2 脚手架
  • Oracle修改Number类型精度报错:ORA-01440
  • Prometheus+Grafana 监控Tongweb7(by lqw)
  • 工作需求ElementUi组件的使用
  • JavaScript-如何实现克隆(clone)函数
  • (三)从jvm层面了解线程的启动和停止
  • [译] 怎样写一个基础的编译器
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • co模块的前端实现
  • create-react-app项目添加less配置
  • Facebook AccountKit 接入的坑点
  • MySQL几个简单SQL的优化
  • node 版本过低
  • Selenium实战教程系列(二)---元素定位
  • 编写符合Python风格的对象
  • 初探 Vue 生命周期和钩子函数
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 记一次用 NodeJs 实现模拟登录的思路
  • 将 Measurements 和 Units 应用到物理学
  • 终端用户监控:真实用户监控还是模拟监控?
  • Spring第一个helloWorld
  • 仓管云——企业云erp功能有哪些?
  • ​iOS实时查看App运行日志
  • #pragma data_seg 共享数据区(转)
  • #前后端分离# 头条发布系统
  • (06)Hive——正则表达式
  • (c语言)strcpy函数用法
  • (zt)最盛行的警世狂言(爆笑)
  • (八十八)VFL语言初步 - 实现布局
  • (待修改)PyG安装步骤
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十六)Flask之蓝图
  • (原)本想说脏话,奈何已放下
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)一些感悟
  • (转)原始图像数据和PDF中的图像数据
  • .Net 4.0并行库实用性演练
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • @ConfigurationProperties注解对数据的自动封装
  • @Transaction注解失效的几种场景(附有示例代码)