495. 提莫攻击
在《英雄联盟》的世界中,有一个叫 “提莫” 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态。现在,给出提莫对艾希的攻击时间序列和提莫攻击的中毒持续时间,你需要输出艾希的中毒状态总时长。
你可以认为提莫在给定的时间点进行攻击,并立即使艾希处于中毒状态。
解题思路: 维护区间计算的起始点和终止点,当遍历的区间起始点不落在维护区间里,则可以计算这个维护区间的长度,否则将维护区间与遍历区间合并。
class Solution {
public:
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
if (timeSeries.empty()) return 0;
int start = -1, end = 0, res = 0;
sort(timeSeries.begin(), timeSeries.end());
for (auto a : timeSeries) {
if (start == -1) {
start = a;
end = a + duration;
}
else {
if (a <= end) end = a + duration;
else {
res += end - start;
start = a;
end = start + duration;
}
}
}
res += end - start;
return res;
}
};