zoukankan      html  css  js  c++  java
  • Leetcode 495

     1 class Solution:
     2     def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
     3         '''
     4 首先找到规律
     5 若下一个开始的时间 减去上一个开始的时间,若结果大于 持续的时间,那么就没有重合部分,直接加上持续时间
     6 若结果等于 持续时间,那么正好结束的时候,又发出了攻击,所以也没有重合,比如[1,3] 2: 那么1s开始持续两秒,到
     7 2s末,那么下一次攻击就是3s时
     8 那么如果小于 持续时间,那么直接就加上 这个结果,因为重复了这么多,所以后面要加上这么多
     9 其实也就是这个意思:比如示例2: 2 + 2 - (1 + 2) = 2 - 1 = 1
    10         '''
    11         list_time = sorted(timeSeries)
    12         total_duration = 0
    13         for i in range(len(timeSeries)):
    14             if i == 0:
    15                 total_duration += duration
    16             elif list_time[i] - list_time[i - 1] >= duration:
    17                 total_duration += duration
    18             else:
    19                 total_duration += list_time[i] - list_time[i - 1]
    20         
    21         return total_duration

    根据上面 条件语句 可以找到每次加的都是 比较时候小的那个值..也是因为若是有重复部分,那么差值肯定会比持续时间小 

    1 class Solution:
    2     def findPoisonedDuration(self, timeSeries: List[int], duration: int) -> int:
    3         list_time = sorted(timeSeries)
    4         total_duration = 0
    5         if len(timeSeries) == 0:
    6             return 0
    7         for i in range(1, len(timeSeries)):
    8             total_duration += min(list_time[i] - list_time[i - 1], duration)
    9         return total_duration + duration #因为循环里面没有计算第一个时间点
  • 相关阅读:
    重装系统之后应装软件
    中文乱码解决方案
    买电脑需要考虑的电脑配置
    JavaBean个人总结
    Servlet个人总结
    web.xml详解
    默认软件
    Eclipse导入项目
    Eclipse插件安装
    Tomcat详解
  • 原文地址:https://www.cnblogs.com/letianpaiai/p/13833918.html
Copyright © 2011-2022 走看看