1. 程式人生 > 其它 >力扣495(java)-提莫攻擊(簡單)

力扣495(java)-提莫攻擊(簡單)

題目:

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

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

示例1:

輸入: [1,4], 2
輸出: 4
原因: 第 1 秒初,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒末結束。
第 4 秒初,提莫再次攻擊艾希,使得艾希獲得另外 2 秒中毒時間。
所以最終輸出 4 秒。
示例2:

輸入: [1,2], 2

輸出: 3
原因: 第 1 秒初,提莫開始對艾希進行攻擊並使其立即中毒。中毒狀態會維持 2 秒鐘,直到第 2 秒末結束。
但是第 2 秒初,提莫再次攻擊了已經處於中毒狀態的艾希。
由於中毒狀態不可疊加,提莫在第 2 秒初的這次攻擊會在第 3 秒末結束。
所以最終輸出 3 。

提示:

你可以假定時間序列陣列的總長度不超過 10000。
你可以假定提莫攻擊時間序列中的數字和提莫攻擊的中毒持續時間都是非負整數,並且不超過 10,000,000。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/teemo-attacking
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

解題思路:

整個題的關鍵就是,中毒狀態不可疊加!

1.如果nums1 +duration < =nums2,表明第二次中毒開始時,上一次已經結束了,則結果就是兩個持續時間;

2.如果nums1 + duration > nums2,表明第一次中毒時間超過了第二次中毒起始時間,則結果就是一個持續時間加上兩個時間點的差值

程式碼:

執行結果: