Python|Leetcode《539》|最小时间差

专栏《LeetCode|一刷到底》
打卡每天leetcode精选每日一题(尽量不断更!)

点击关注不迷路!!!

一、题目描述

  • 题目:最小时间差
  • 难度:中等
  • 地址:《最小时间差》
  • 描述:给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
  • 示例1

输入:timePoints = [“23:59”,“00:00”]
输出:1

  • 示例2

输入:timePoints = [“00:00”,“23:59”,“00:00”]
输出:0

提示:

  • 2 <= timePoints.length <= 2 * 1 0 4 10^4 104
  • timePoints[i] 格式为 “HH:MM”

二、题目解析

本题考查我们得到任意两个时间中最小的差值,并以分钟数来进行表示。
对于这种寻找差值的题目,我们一般的思路就是进行排序并且计算每两个数值之间的差值寻找最小的那一个,本题的思路依旧如此,但是需要注意一下其中的一些关键点。

  1. 循环计算:循环计算指的是我们需要多进行一次计算,此次计算算的是时间列表末尾的时间和开始的时间的差值,例如有排序后的序列['00:00','01:00','23:00],不能忘记计算23:0000:00的差值。
  2. 分钟计算:小时*60+分钟
  3. 分钟化简:24小时为1440分钟,但是任意两个时间的差值都应该在720分钟也就是12小时之内,因此计算的时间差大于720分钟的差值我们应该用1440减去该时间作为结果。

三、解题代码

解法

class Solution:
    def findMinDifference(self, timePoints: List[str]) -> int:
        # 排序
        timePoints.sort()
        n = len(timePoints)
        res = float('inf')
        for i in range(n):
            # 计算时间差
            dif = abs((int(timePoints[i][:2]) * 60 + int(timePoints[i][3:])) - (int(timePoints[i - 1][:2]) * 60 + int(timePoints[i - 1][3:])))
            # 时间化简
            if dif > 720:
                dif = 1440 - dif
            # 取每次的最小值
            if dif < res:
                res = dif
        return res
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二哥不像程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值