1. 程式人生 > >495.提莫攻擊

495.提莫攻擊

在《英雄聯盟》的世界中,有一個叫 “提莫” 的英雄,他的攻擊可以讓敵方英雄艾希(編者注:寒冰射手)進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。

你可以認為提莫在給定的時間點進行攻擊,並立即使艾希處於中毒狀態。

示例1:

輸入: [1,4], 2
輸出: 4
原因: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。
在第 4 秒開始時,提莫再次攻擊艾希,使得艾希獲得另外 2 秒的中毒時間。
所以最終輸出 4 秒。

示例2:

輸入: [1,2], 2
輸出:
3 原因: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。 但是在第 2 秒開始時,提莫再次攻擊了已經處於中毒狀態的艾希。 由於中毒狀態不可疊加,提莫在第 2 秒開始時的這次攻擊會在第 3 秒鐘結束。 所以最終輸出 3。

注意:

  1. 你可以假定時間序列陣列的總長度不超過 10000。
  2. 你可以假定提莫攻擊時間序列中的數字和提莫攻擊的中毒持續時間都是非負整數,並且不超過 10,000,000。

class Solution {
public:
    int findPoisonedDuration(vector<int>& timeSeries, int duration) {
        if (timeSeries.empty()) return 0;
        int res = 0, n = timeSeries.size();
        for (int i = 1; i < n; ++i) {
            int diff = timeSeries[i] - timeSeries[i - 1];
            res += (diff < duration) ? diff : duration;
        }
        return res + duration;
    }
};