leetcode 495. 提莫攻擊 C語言版
阿新 • • 發佈:2018-11-23
在《英雄聯盟》的世界中,有一個叫 “提莫” 的英雄,他的攻擊可以讓敵方英雄艾希(編者注:寒冰射手)進入中毒狀態。現在,給出提莫對艾希的攻擊時間序列和提莫攻擊的中毒持續時間,你需要輸出艾希的中毒狀態總時長。
你可以認為提莫在給定的時間點進行攻擊,並立即使艾希處於中毒狀態。
示例1:
輸入: [1,4], 2 輸出: 4 原因: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。 在第 4 秒開始時,提莫再次攻擊艾希,使得艾希獲得另外 2 秒的中毒時間。 所以最終輸出 4 秒。
示例2:
輸入: [1,2], 2 輸出:3 原因: 在第 1 秒開始時,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒鐘結束。 但是在第 2 秒開始時,提莫再次攻擊了已經處於中毒狀態的艾希。 由於中毒狀態不可疊加,提莫在第 2 秒開始時的這次攻擊會在第 3 秒鐘結束。 所以最終輸出 3。
在第一次攻擊後,若在持續時間內,若沒有第二次攻擊則總時間加上持續時間。若再次遭到攻擊,則時間重置,總時間加上兩次攻擊的間隔。
int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration) { int i; int time = duration; //由於最後一次之後沒有資料了,要加上最後一次的時間 for(i = 0;i < timeSeriesSize - 1;i++) { if(timeSeries[i] + duration > timeSeries[i + 1]) time += (timeSeries[i + 1] - timeSeries[i]); else time += duration; } if(timeSeriesSize != 0) return time; else return 0; }