力扣刷题(第一百天)
灵感来源
- 保持更新,努力学习
- python脚本学习
提莫攻击
解题思路
- 初始化总中毒时间
total
。 - 遍历每次攻击的时间点(从第二个开始):
- 计算当前攻击与前一次攻击的时间间隔
gap
。 - 若
gap < duration
,则本次中毒时间为gap
;否则为duration
。
- 计算当前攻击与前一次攻击的时间间隔
- 最后加上最后一次攻击的持续时间。
class Solution:def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:n = len(timeSeries)if n == 0:return 0total = 0# 遍历计算相邻两次攻击的间隔for i in range(1, n):gap = timeSeries[i] - timeSeries[i-1]# 若间隔小于duration,则本次中毒时间为gap;否则为durationtotal += min(gap, duration)# 加上最后一次攻击的持续时间total += durationreturn total
逐行解释
class Solution:def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:n = len(timeSeries) # 获取攻击次数if n == 0: # 处理空数组的特殊情况return 0total = 0 # 初始化总中毒时间# 遍历计算相邻两次攻击的间隔for i in range(1, n):# 计算当前攻击与前一次攻击的时间间隔gap = timeSeries[i] - timeSeries[i-1]# 如果间隔小于持续时间duration,说明两次攻击的中毒效果有重叠# 本次攻击的有效中毒时间为gap(即前一次中毒结束前的时间)# 否则,本次攻击的中毒时间为完整的durationtotal += min(gap, duration)# 最后一次攻击的中毒时间必然是完整的duration# 因为之后没有新的攻击来中断这个中毒效果total += durationreturn total