leetcode 495. 提莫攻击(esay)(优质解法)

链接:495. 提莫攻击

代码:

java 复制代码
class Solution {
    public int findPoisonedDuration(int[] timeSeries, int duration) {
        int time=0;
        for(int i=1;i<timeSeries.length;i++){
            if(timeSeries[i]-timeSeries[i-1]<duration){
                time+=timeSeries[i]-timeSeries[i-1];
            }else{
                time+=duration;
            }
        }
        time+=duration;

        return time;
    }
}

题解:

timeSeries 数组代表刷新中毒状态的时间,要计算总共中毒的时间,可以通过计算前后刷新中毒状态,中间持续的中毒时间获得,由下图可以很好的描述

根据上图,假设 timeSeries 数组中的内容为 1,2,4,7 ,这是刷新中毒状态的时间,在时间 1 和 2 之间中毒的持续时间为 2 - 1 =1,此时 timeSeries i - timeSeries i-1 = 1 < duration ,这是在时间 1 中的毒

在时间 2 和 4 之间 timeSeries i - timeSeries i-1 = 4 - 2 =2 = duration ,中毒的持续时间为 duration=2 ,这是在时间 2 中的毒

在时间 4 和 7 之间,timeSeries i - timeSeries i-1 = 7 - 4 =3 > duration ,中毒的持续时间为 duration=2 ,这是在时间 4 中的毒

在时间 7 中的毒持续 duration = 2 秒

根据上面的分析我们就可以得到总共中毒的时间,简单来说就是统计每次发起攻击中毒的持续时间,如果中毒的持续时间还没有到 duration 就被刷新了,就代表本次发起攻击中毒的持续时间结束

相关推荐
带多刺的玫瑰30 分钟前
Leecode#9刷题之回文数
数据结构·算法
泯泷1 小时前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法
泯泷1 小时前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷1 小时前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法
泯泷1 小时前
手搓JSVM第 3 篇:从栈式 VM 到寄存器式 VM:为什么我们选择寄存器
前端·javascript·算法
泯泷1 小时前
第 4 篇:让 VM 支持变量:Slot、Environment 与 TDZ
前端·javascript·算法
Asize2 小时前
54. 螺旋矩阵
算法
Asize2 小时前
73. 矩阵置零
算法
微露清风2 小时前
快慢指针算法学习记录
学习·算法·快慢指针
benchmark_cc3 小时前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源