Question:java
在《英雄聯盟》的世界中,有一個叫 「提莫」 的英雄,他的攻擊能夠讓敵方英雄艾希(編者注:寒冰射手)進入中毒狀態。如今,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你須要輸出艾希的中毒狀態總時長。數組
你能夠認爲提莫在給定的時間點進行攻擊,並當即使艾希處於中毒狀態。code
示例1:io
輸入: [1,4], 2 輸出: 4 緣由: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其當即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。 在第 4 秒開始時,提莫再次攻擊艾希,使得艾希得到另外 2 秒的中毒時間。 因此最終輸出 4 秒。
示例2:class
輸入: [1,2], 2 輸出: 3 緣由: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其當即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。 可是在第 2 秒開始時,提莫再次攻擊了已經處於中毒狀態的艾希。 因爲中毒狀態不可疊加,提莫在第 2 秒開始時的此次攻擊會在第 3 秒鐘結束。 因此最終輸出 3。
注意:im
Answer:時間
解題思路:時間是一個連續的過程,因此只須要在意兩個時間節點。一個是大於等於duration的狀況,一個是小於duration的狀況(多個時間點包含在一個duration內),因此解答Java code 以下:co
class Solution { public int findPoisonedDuration(int[] timeSeries, int duration) { int result = 0; if (timeSeries.length > 0) { for (int i = 0; i < timeSeries.length - 1; i++) { int tmp = timeSeries[i + 1] - timeSeries[i]; //計算每兩個時間段的間隔 if (tmp >= duration) { //間隔是否超過持續時間 result += duration; } else { result += tmp; } } result += duration; //加上最後一個特殊時間段 } return result; } }