TeemoAttacking

来源:互联网 发布:下淘宝网手机版 编辑:程序博客网 时间:2024/06/06 04:08

最近刚开始刷leetcode,先从easy开始刷,不小心看到了TeemoAttacking。点进去一看居然还真是LOL里的提莫。干脆就先把这个medium题做了!

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.

Example 1:

Input: [1,4], 2Output: 4Explanation: 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.

Example 2:

Input: [1,2], 2Output: 3Explanation: 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.

Note:

  1. You may assume the length of given time series array won't exceed 10000.
  2. You may assume the numbers in the Teemo's attacking time series and his poisoning time duration per attacking are non-negative integers, which won't exceed 10,000,000.

思路:感觉这题比较简单(是因为我提莫玩的好?)。使用sum来保存总共的致盲时间,遍历数组判断相邻两元素差gap(末尾元素除外)

是否大于致盲持续时间duration,如果大于,sum加上duration,如果小于,sum加上gap。末尾元素不需判断,始终sum加上duration。这个逻辑应该不难理解。


public class TeemoAttacking {    public int findPoisonedDuration(int[] timeSeries, int duration) {        if(timeSeries == null || timeSeries.length==0 || duration <= 0)        return 0;        int sum = 0;        for(int i=0; i<timeSeries.length-1; i++) {        int gap = timeSeries[i+1]-timeSeries[i];        sum += gap>duration?duration:gap;        }        sum+=duration;        return sum;    }}



原创粉丝点击