【leetcode】495. teemo attacking

Description

In LLP 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

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.

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.

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static int (int[] timeSeries, int duration) {
int len = timeSeries.length;
int count = 0;
if (len == 0) {
return 0;
}
for (int i = 0; i < len - 1; i++) {
if (timeSeries[i + 1] - timeSeries[i] >= duration) {
count += duration;
} else {
count += timeSeries[i + 1] - timeSeries[i];
}
}
//再从len - 1开始挖
count+=duration;
return count;
}

Result

AC

Analyse

思路就是一道一道的挖,最后再统计最后一次,比较简单。

Optimization

1
2
3
4
5
6
7
8
9
10
11
12
public int (int[] timeSeries, int duration) {
if (timeSeries.length == 0) {
return 0;
}
int begin = timeSeries[0];
int count = 0;
for (int i : timeSeries) {
count = count + (begin + duration > i ? i - begin : duration);
begin = i;
}
return count + duration;
}

Analyse

就是写的方法简单些,这个可以追求代码的简洁。