给定一个 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
};