文章目录
- 题目链接:
- 题目描述:
- 解法
- C++ 算法代码:
题目链接:
495. 提莫攻击
题目描述:
解法
这里我们要看提莫攻击事件的差值。
如果提莫连续两次攻击的时间差比中毒秒数高或相等,那么
t=duration
如果提莫连续两次攻击的时间差比中毒秒数低,那么
t=连续两次攻击的时间差
要注意:结束的最后一次是完整的
duration
秒。
C++ 算法代码:
class Solution {public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int ret = 0; // 初始化总中毒持续时间为 0for(int i = 1; i < timeSeries.size(); i++) // 遍历中毒时间点序列{int tmp = timeSeries[i] - timeSeries[i - 1]; // 计算当前时间点与前一个时间点的时间差if(tmp >= duration) ret += duration; // 如果时间差大于或等于中毒持续时间,说明可以完整中毒一次,将中毒持续时间加到总持续时间中else ret += tmp; // 如果时间差小于中毒持续时间,说明中毒时间重叠,只能计算部分时间,将时间差加到总持续时间中}return ret + duration; // 最后一次中毒的持续时间总是完整的}
};