題目描述
在《英雄聯盟》的世界中,有乙個叫 「提莫」 的英雄,他的攻擊可以讓敵方英雄艾希(編者注:寒冰射手)進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。
你可以認為提莫在給定的時間點進行攻擊,並立即使艾希處於中毒狀態。
示例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 ...