-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy path0495-teemo-attacking.js
71 lines (57 loc) · 2.37 KB
/
0495-teemo-attacking.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// 495. Teemo Attacking
// Medium 51%
// 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], 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.
// Example 2:
// 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.
// Note:
// You may assume the length of given time series array won't exceed 10000.
// 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.
/**
* @param {number[]} timeSeries
* @param {number} duration
* @return {number}
*/
const findPoisonedDuration = function(timeSeries, duration) {
let result = 0
for (let i = 0; i < timeSeries.length; i++) {
const d = timeSeries[i] - (timeSeries[i - 1] || -Infinity)
result += d > duration ? duration : d
}
return result
}
;[
[[1,4], 2], // 4
[[1,2], 2], // 3
[[1,3], 2], // 4
[[1,2,3,4,5], 5], // 9
[[1,6,11,12,30], 5], // 21
].forEach(args => {
console.log(findPoisonedDuration(...args))
})
// Solution:
// 如果两个数间的间隔大于持续时间,则算持续时间,
// 若小于,则算两数间隔时间。
// Submission Result: Accepted