In this **Leetcode Teemo Attacking problem solution** Our hero Teemo is attacking an enemy Ashe with poison attacks! When Teemo attacks Ashe, Ashe gets poisoned for a exactly duration seconds. More formally, an attack at second t will mean Ashe is poisoned during the inclusive time interval [t, t + duration - 1]. If Teemo attacks again before the poison effect ends, the timer for it is reset, and the poison effect will end duration seconds after the new attack.

You are given a non-decreasing integer array timeSeries, where timeSeries[i] denotes that Teemo attacks Ashe at second timeSeries[i], and an integer duration.

Return the total number of seconds that Ashe is poisoned.

## Problem solution in Python.

class Solution: def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int: ret = len(timeSeries) * duration # first, sum up all for i in range(len(timeSeries)-1): if timeSeries[i+1] - timeSeries[i] < duration: ret -= (duration - (timeSeries[i+1] - timeSeries[i])) # and then, weep out return ret

## Problem solution in Java.

```
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
if(timeSeries.length==0) return 0;
int result=0;
for(int i=1; i<timeSeries.length; i++){
if(timeSeries[i-1]+duration <= timeSeries[i]) result+=duration;
else{
result+= timeSeries[i] - timeSeries[i-1];
}
}
result+=duration;
return result;
}
}
```

## Problem solution in C++.

```
int findPoisonedDuration(vector<int>& timeSeries, int duration) {
int total = 0;
for (int i = 0; i < timeSeries.size(); i++)
total += (i > 0 && timeSeries[i] - timeSeries[i-1] < duration ? timeSeries[i] - timeSeries[i - 1] : duration);
return total;
}
```

## 0 Comments