前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >力扣题库第495题目解析

力扣题库第495题目解析

作者头像
阑梦清川
发布2025-02-24 23:33:55
发布2025-02-24 23:33:55
360
举报
文章被收录于专栏:学习成长指南

1.题目再现

这个题目的名字叫做提莫攻击,如果是玩游戏的小伙伴对于这个场景就很熟悉了;

这个实际上是说:已知的条件会给我们一个数组,在不同的时刻,也就是这个数组里面的不同的位置,会被攻击,这个时候就会处于中毒的状态,然后我们需要根据这个题目给定的数组和中毒的时刻,判断这个总共的中毒的时间;

2.思路分析&&示例说明

2.1第一个示例

下面的这个就是题目给定的第一个示例:我来说一下这样的题目应该如何进行分析,我们遵循从易到难的思路;

他的这个数组里面是两个元素,我们可以把这个补全,什么叫做补全?

就是我们写 1 2 3 4 这样全部写出来;

这个时候的1,4相当于在这个1,4位置会受到攻击,攻击之后就会中毒,这个时候的持续时间是2,因此,题目上面说了,这四个数据里面,第一个位置和第四个位置会中毒,也就是数组里面的1 4,1开始中毒,持续时间2秒,也就是经过了1到2,2到3的过程,至此,第一段的中毒时间结束;

接着到4的时候,再次中毒,这个时候持续的时间是2,也就是4到5,5到6;

综合上面的分析,一共的中毒的时间就是4,即1到2,2到3,4到5,5到6,这个就是对于给定的第一个案例的解释


2.2第二个示例

下面的是给定的第二个示例:

这个地方我提示一下,之所以给出来第二个示例,就是因为他和第一个有区别,如果两个题目的思路是完全一样的,这个时候就没有给出来的必要了;

它的特殊之处就在于他是第一秒的时候开始中毒,中毒的时间是两秒,本来应该是1到2,2到3,但是这个时候题目里面说了,2的时候有中毒了,注意这个是新的过程,因此1开始的那一次中毒只会持续1秒钟,2的时候就会开始新一轮的中毒,持续的时间是2秒;

综上所述,这个过程里面的持续的时间就是3秒钟;

3.代码解释

上面的两个例子更多的是在总结思路和方法,接下来的代码就是对于上面的思路的一个凝练和高度概括;

显然,我们发现,需要使用数组里面的前一个数字和后一个数字的差和我们的duration(即中毒的持续的时间)进行比较,如果差值大,这个时候就是完全中毒药,不会出现交叉;

如果这个duration大,也就是这一轮没结束的时候,新一轮的这个中毒就开始了,这个时候就需要加上的时两个的差值,而不是这个duration了;

例如1 2 duration=2,这个时候1开始的时候加上的中毒时间应该是2-1的差值,而不是这个duration,因为这个2没过完,新一轮的中毒又开始了;

在下面的这个代码里面,我们使用这个ret不断对于这个过程里面的中毒的时间进行统计,最后作为返回值就可以了;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.题目再现
  • 2.思路分析&&示例说明
    • 2.1第一个示例
    • 2.2第二个示例
  • 3.代码解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档