Leedcode-提莫攻击

自己写的,中间算法有遗漏的遍历

复制代码
class Solution:
    def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
        if duration == 0:  # 如果duration为0,则返回0,因为没有中毒时间
            return 0
        count = 0  # 初始化中毒总时间
        time_box = [-1, -1]  # 初始化时间框架的左右边界,用于跟踪中毒状态
        n = len(timeSeries)  # 获取攻击时间序列的长度
        for i in range(n):
            if timeSeries[i] > time_box[1]:  # 如果当前攻击时间在之前中毒状态结束后,即在时间框架右边界之后
                time_box = [timeSeries[i], timeSeries[i] + duration - 1]  # 更新时间框架为当前攻击时间至中毒持续时间结束
                count += time_box[1] - time_box[0] + 1  # 将当前中毒时间段的长度加到中毒总时间上
            else:  # 如果当前攻击时间在之前中毒状态结束之前,即在时间框架右边界之前
                time_box = [timeSeries[i], timeSeries[i] + duration - 1]  # 更新时间框架为当前攻击时间至中毒持续时间结束
                count += (timeSeries[i] - timeSeries[i - 1])  # 将当前攻击时间与上一次攻击时间之间的间隔加到中毒总时间上
        if count == 0:  # 如果中毒总时间为0,说明所有攻击时间都在同一时间点
            return n + duration - 1  # 返回总攻击次数加上中毒持续时间减去1(因为第一次攻击不会受到中毒时间的影响)
        else:
            return count  # 返回中毒总时间
复制代码

 gpt优化:

复制代码
class Solution:
    def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
        if duration == 0:  # 如果中毒持续时间为0,则返回0,因为没有中毒时间
            return 0
        
        count = 0  # 初始化中毒总时间
        end_time = -1  # 初始化中毒状态结束时间
        
        for time in timeSeries:
            if time > end_time:  # 当前攻击时间在上次中毒结束时间之后
                count += duration  # 直接加上持续中毒时间
            else:  # 当前攻击时间在上次中毒结束时间之前
                count += time + duration - 1 - end_time  # 只累加新攻击带来的额外中毒时间
            end_time = time + duration - 1  # 更新中毒状态结束时间为当前攻击时间加上持续时间减去1
        
        return count  # 返回总中毒时间
复制代码

 

posted @   Junior_bond  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示