The solution is simple, use a variable cend to store the current end time of the poisoned status. Traverse the array, if the start time is less than the current end time, subtract the overlapping time and add to the sum. Else just simply add the duration to the sum.

```
class Solution(object):
def findPoisonedDuration(self, timeSeries, duration):
"""
:type timeSeries: List[int]
:type duration: int
:rtype: int
"""
if len(timeSeries) == 0:
return 0
cend = timeSeries[0] + duration
sum = duration
for i in range(1, len(timeSeries)):
if timeSeries[i] < cend:
sum += timeSeries[i] + duration - cend
else:
sum += duration
cend = timeSeries[i] + duration
return sum
```