每日算法系列【LeetCode 495】提莫攻擊

題目描述

在《英雄聯(lián)盟》的世界中,有一個(gè)叫 “提莫” 的英雄,他的攻擊可以讓敵方英雄艾希(編者注:寒冰射手)進(jìn)入中毒狀態(tài)。

兔寶寶提莫

現(xiàn)在,給出提莫對(duì)艾希的攻擊時(shí)間序列和提莫攻擊的中毒持續(xù)時(shí)間,你需要輸出艾希的中毒狀態(tài)總時(shí)長(zhǎng)。

你可以認(rèn)為提莫在給定的時(shí)間點(diǎn)進(jìn)行攻擊,并立即使艾希處于中毒狀態(tài)。

示例1

輸入:
[1,4], 2
輸出:
4
解釋:
在第 1 秒開(kāi)始時(shí),提莫開(kāi)始對(duì)艾希進(jìn)行攻擊并使其立即中毒。中毒狀態(tài)會(huì)維持 2 秒鐘,直到第 2 秒鐘結(jié)束。
在第 4 秒開(kāi)始時(shí),提莫再次攻擊艾希,使得艾希獲得另外 2 秒的中毒時(shí)間。
所以最終輸出 4 秒。

示例2

輸入:
[1,2], 2
輸出:
3
解釋:
在第 1 秒開(kāi)始時(shí),提莫開(kāi)始對(duì)艾希進(jìn)行攻擊并使其立即中毒。中毒狀態(tài)會(huì)維持 2 秒鐘,直到第 2 秒鐘結(jié)束。
但是在第 2 秒開(kāi)始時(shí),提莫再次攻擊了已經(jīng)處于中毒狀態(tài)的艾希。
由于中毒狀態(tài)不可疊加,提莫在第 2 秒開(kāi)始時(shí)的這次攻擊會(huì)在第 3 秒鐘結(jié)束。
所以最終輸出 3。

題解

因?yàn)閿?shù)組是時(shí)間序列,所以是給你排好序的,不需要你自己排序。

那么對(duì)于 t[i] 來(lái)說(shuō),如果 t[i-1]+d \le t[i] 的話,就說(shuō)明前一時(shí)刻的中毒效果已經(jīng)過(guò)去了,那么當(dāng)前時(shí)刻的中毒效果持續(xù)時(shí)間都是屬于當(dāng)前時(shí)刻的,答案加上 d 就行了。但是如果 t[i-1]+d > t[i] ,那么前一時(shí)刻的中毒效果還在,等前一時(shí)刻的中毒效果過(guò)去了,剩下的中毒時(shí)間才能算是當(dāng)前時(shí)刻的,而扣除掉上一時(shí)刻剩余的時(shí)間為 t[i] - t[i-1] 。所以最后屬于當(dāng)前時(shí)刻的中毒時(shí)間只要取 t[i] - t[i-1]d 的最小值就行了。

最終時(shí)間復(fù)雜度為 O(n) ,空間復(fù)雜度為 O(1) 。

代碼

c++

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

python

class Solution:
    def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
        n = len(timeSeries)
        res = 0 if n==0 else duration
        for i in range(1, n):
            res += min(timeSeries[i]-timeSeries[i-1], duration)
        return res

后記

這題難度其實(shí)稱不上中等,選取這道題完全是因?yàn)橛形易類?ài)的小提莫!

如果有同樣喜愛(ài)英雄聯(lián)盟的召喚師(小姐姐最棒了),可以加我好友一起開(kāi)黑呀。本人艾歐尼亞ID:godweiyang)黃金水平,雖然很菜,但是打字速度快!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容