WhiteYin / LeetcodeAnswer

leedcode解答,新手向
0 stars 0 forks source link

495. Teemo Attacking #33

Open WhiteYin opened 6 years ago

WhiteYin commented 6 years ago

Decription:
In LOL world, there is a hero called Teemo and his attacking can make his enemy Ashe be in poisoned condition. Now, given the Teemo's attacking ascending time series towards Ashe and the poisoning time duration per Teemo's attacking, you need to output the total time that Ashe is in poisoned condition.

You may assume that Teemo attacks at the very beginning of a specific time point, and makes Ashe be in poisoned condition immediately.

Example1:

Input: [1,4], 2
Output: 4
Explanation: At time point 1, Teemo starts attacking Ashe and makes Ashe be poisoned immediately. 
This poisoned status will last 2 seconds until the end of time point 2. 
And at time point 4, Teemo attacks Ashe again, and causes Ashe to be in poisoned status for another 2 seconds. 
So you finally need to output 4.

Example2:

Input: [1,2], 2
Output: 3
Explanation: At time point 1, Teemo starts attacking Ashe and makes Ashe be poisoned. 
This poisoned status will last 2 seconds until the end of time point 2. 
However, at the beginning of time point 2, Teemo attacks Ashe again who is already in poisoned status. 
Since the poisoned status won't add up together, though the second poisoning attack will still work at time point 2, it will stop at the end of time point 3. 
So you finally need to output 3.
WhiteYin commented 6 years ago

解题思路:
  本来我是想用递归做的,但是因为给定的参数只有2个,所以用迭代了。

  1. 迭代函数需要3个参数:前一个时间点、下一个时间点和中毒间隔,还需要一个计算出的中毒消失时间点;
  2. 通过分类讨论,可以分成2种情况:下一个时间点艾希仍处于中毒中和艾希脱离中毒,然后分别计算出增加的中毒时间返回给原函数即可。

注意:测试的数据中有一个很坑的地方,就是会传一个空数组。你这空数组有什么意思啊?提莫不攻击的咯?