[路飞]_leetcode_539.最小时间差

171 阅读1分钟

给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。

示例 1:

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

示例 2:

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

解题思路

这一题首先需要把时间列表做一个排序,先把时间转化成分钟数,然后计算当前分钟数与上一分钟数的差值,取最小值即可。 在判断之前还需要先计算特殊情况下的时间差(也就是最后一个时间到第一个时间差),如例1中需要对23:59 - 00:00的时间差,因为23:59 - 00:00为负数,需要多加24小时,得到1分钟。

代码

var fnc = function(str) {
    return Number(str[0]) * 10 * 60 + Number(str[1]) * 60 + Number(str[3]) * 10 + Number(str[4])
}
var findMinDifference = function(timePoints) {
    timePoints = timePoints.sort()

    let ans = fnc(timePoints[0]) + 24 * 60 - fnc(timePoints[timePoints.length-1])
    for (let i = 1; i < timePoints.length; i++) {
        ans = Math.min(ans, fnc(timePoints[i]) - fnc(timePoints[i - 1]))
    }

    return ans
};