给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
示例 1:
输入:timePoints = ["23:59","00:00"]
输出:1
示例 2:
输入:timePoints = ["00:00","23:59","00:00"]
输出:0
解题思路:
1.将时间转化为分钟数,进行升序排列;
2.遍历时间数组,将相邻差值组成一个新的 差值数组;
3.用最后一项减去第一项,并添加到差值数组;
4.将差值数组进行升序排列;
5.返回第一项,即为最小时间差;
代码
/**
* @param {string[]} timePoints
* @return {number}
*/
var findMinDifference = function(timePoints) {
if(!Array.isArray(timePoints)) return
const timeArray = timePoints.map((item)=>{
return item = parseInt(item.substr(0,2)) * 60 + parseInt(item.substr(3,2))
}).sort((a,b)=>{return a-b})
let numList = []
timeArray.forEach((item,i)=>{
if(i>0){
numList.push(Math.min(Math.abs(timeArray[i] - timeArray[i-1]),1440-Math.abs(timeArray[i] - timeArray[i-1])))
}
})
const lastChild = Math.abs(timeArray[timeArray.length-1] - timeArray[0])
numList.push(Math.min(lastChild,1440-lastChild))
numList.sort((a,b)=>{return a-b})
return numList[0]
};
// let data = ["00:00","04:00","22:00"]
let data = ["23:59","00:00"]
findMinDifference(data )
建议进行性能测试