数组:力扣495. 提莫攻击

1、题目描述:

数组:力扣495. 提莫攻击_第1张图片
数组:力扣495. 提莫攻击_第2张图片

2、题解:

仔细读题,我们可以发现,其实只需要一次遍历就可以解决问题:设置一个统计中毒时间的变量,然后从第一个到倒数第二个遍历,如果后一个的数-这个数中毒的持续时间大,也就是此时中毒的持续时间已经结束,但是只能中毒duration的时间;如果后一个的数-这个数中毒的持续时间小,也就是还没等中毒的持续时间结束又一次进行攻击,那么由于中毒状态不能叠加,那么此时的中毒时间就是后一个的数-这个数。最后记得加上中毒的持续时间

class Solution:
    def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
        n = len(timeSeries)
        if n == 0:
            return 0
        total = 0
        for i in range(n - 1):
            total += min(timeSeries[i + 1] - timeSeries[i],duration)
        return total + duration

3、复杂度分析:

时间复杂度:O(N),N为数组的长度
空间复杂度为:O(1)

你可能感兴趣的:(LeetCode高频面试题)