#495. Teemo Attacking

https://leetcode.com/problems/teemo-attacking/#/description

题目过长 这里就不放啦

翻译

  • 给定一个升序的数组如【1, 4】和一个数字 【2】
  • 代表在1, 4时刻进行下毒,每次下毒持续2秒
  • 这样【1, 4】 和【2】的中毒持续时间是4= 【1,2】 + 【4, 5】
  • 需要注意的是,中毒事件不能叠加,即剩余还有1秒时,又中了新的持续2秒的毒,那么中毒持续时间为2s
  • 举例如下 【1, 2】 和【2】
  • t=1,所下的毒应该持续到t=3
  • 但是这里在t=2时在还剩1s解毒时,又下了一次毒,这样毒持续的时间为2 而不是2+1
  • 所以 【1, 2】 和【2】 中毒持续时间为【1, 2, 3】= 3

思路

  • re = 0, old_end =
  • new_end = timeSeries[i-1] + duration - 1
  • 中毒持续时间为min(duration,new_end - old_end)
  • old_end = new_end
class Solution(object):
    def findPoisonedDuration(self, timeSeries, duration):
        """
        :type timeSeries: List[int]
        :type duration: int
        :rtype: int
        """
        re = 0
        old_end = -1
        for i in range(len(timeSeries)):
            new_end = timeSeries[i] + duration - 1
            re += min(duration, new_end - old_end)
            old_end = new_end
        return re

你可能感兴趣的:(#495. Teemo Attacking)