算法日常・每日刷题--<模拟>2
495. 提莫攻击 - 力扣LeetCode495. 提莫攻击 - 在《英雄联盟》的世界中有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希编者注寒冰射手进入中毒状态。当提莫攻击艾希艾希的中毒状态正好持续 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 104 * 0 timeSeries[i], duration 107 * timeSeries 按 非递减 顺序排列https://leetcode.cn/problems/teemo-attacking/description/题目描述在《英雄联盟》的世界中有一个叫提莫的英雄。他的攻击可以让敌方英雄艾希进入中毒状态。当提莫攻击艾希艾希的中毒状态正好持续duration秒。正式定义提莫在t秒发起攻击艾希在时间区间[t, t duration - 1]处于中毒状态如果在中毒结束前再次攻击中毒计时器重置从新的攻击时间开始重新计算duration秒输入timeSeries非递减整数数组表示每次攻击的时间duration中毒持续时间输出艾希处于中毒状态的总秒数解题思路我们观察不难发现如果两个相邻数的差值如果制度持续时间,那么就会吃满中毒持续时间如果两个相邻数的差值中毒持续时间,那么中毒时间的累加应该是这两个数的差值到了最后应该数没有下一个数判断是否他的中毒持续时间是多少,那个位置应该是直接吃满了中毒时间上一次攻击开始时间 timeSeries[i]下一次攻击开始时间 timeSeries[i 1]如果 下一次攻击 - 上一次攻击 duration→ 上一次中毒已经结束贡献完整 duration 秒否则→ 上一次中毒被覆盖只贡献 (下一次攻击 - 上一次攻击) 秒class Solution { public: int findPoisonedDuration(vectorint timeSeries, int duration) { int ntimeSeries.size(); int x0,ret0; for(int i1;in;i) { xtimeSeries[i]-timeSeries[i-1]; if(xduration) { retretduration; } else { retretx; } } return retduration; } };