Leetcode 495. Teemo Attacking

Question

Solution1

考虑前后时间点之差和持续时间的大小。

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
if not timeSeries:
return 0
time = 0
for i in range(len(timeSeries) - 1):
if timeSeries[i+1] - timeSeries[i] >= duration:
time += duration
else:
time += timeSeries[i+1] - timeSeries[i]
return time + duration

Solution2

可以优化上面这种解法。因为上面每两个时间点之间都在计算,如果两个时间点之差小于持续时间,那么毒药将会持续下去,所以可以省去这个环节。

1
2
3
4
5
6
7
8
9
10
class Solution:
def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
start, end, time = 0, 0, 0
for elem in timeSeries:
if elem > end: #如果当前时间点小于end,那么可以避过,增大end
time += end - start
start = elem
end = elem + duration
time += end - start
return time