LeetCode495 提莫攻擊

2021-10-10 03:01:29 字數 1313 閱讀 1895

題目描述

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

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

示例1:

輸入: [1,4], 2

輸出: 4

原因: 第 1 秒初,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒末結束。

第 4 秒初,提莫再次攻擊艾希,使得艾希獲得另外 2 秒中毒時間。

所以最終輸出 4 秒。

示例2:

輸入: [1,2], 2

輸出: 3

原因: 第 1 秒初,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒末結束。

但是第 2 秒初,提莫再次攻擊了已經處於中毒狀態的艾希。

由於中毒狀態不可疊加,提莫在第 2 秒初的這次攻擊會在第 3 秒末結束。

所以最終輸出 3 。

解題思路

計算持續時間主要分為兩種情況,一種是中毒持續時間未結束,就開始重新計算中毒持續時間;另一種是中毒持續時間已結束,再次進入中毒持續時間。第一部分只需計算下一次持續時間與當前持續時間的差值即可,第二部分則直接使用單位大小中毒持續時間d即可,最後求和即可。(為什麼返回t+d?因為最後乙個開始時間所帶來的持續時間未進行計算,所以需要單獨加乙個單位時間d)

**

class

solution

:def

findpoisonedduration

(self, timeseries: list[

int]

, duration:

int)

->

int:

d=duration

t=0while

(len

(timeseries)):

for i in

range

(len

(timeseries)-1

):if timeseries[i]

+d<=timeseries[i+1]

: t=t+d

else

: t=t+timeseries[i+1]

-timeseries[i]

return t+d

return t

leetcode 495 提莫攻擊

在 英雄聯盟 的世界中,有乙個叫 提莫 的英雄,他的攻擊可以讓敵方英雄艾希 編者注 寒冰射手 進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。你可以認為提莫在給定的時間點進行攻擊,並立即使艾希處於中毒狀態。示例1 輸入 1,4 2輸出 4原因...

Leetcode 495 提莫攻擊

在 英雄聯盟 的世界中,有乙個叫 提莫 的英雄,他的攻擊可以讓敵方英雄艾希 編者注 寒冰射手 進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。你可以認為提莫在給定的時間點進行攻擊,並立即使艾希處於中毒狀態。示例1 輸入 1,4 2輸出 4原因...

leetcode 495 提莫攻擊

提莫攻擊 在 英雄聯盟 的世界中,有乙個叫 提莫 的英雄,他的攻擊可以讓敵方英雄艾希 編者注 寒冰射手 進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。你可以認為提莫在給定的時間點進行攻擊,並立即使艾希處於中毒狀態。示例1 輸入 1,4 2 ...