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);