xiqe / code-train

前端算法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

最小时间差

xiqe opened this issue · comments

最小时间差

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

示例 1:

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

备注:

  • 列表中时间数在 2~20000 之间。
  • 每个时间取值在 00:00~23:59 之间。

reply

var findMinDifference = function(timePoints) {
    // 先将时间转换为数字升序排序
    let arr = timePoints.map(x=>{
        return Number(x.substring(0,2))*60+Number(x.substring(3))
    }).sort((a,b)=>a-b);
    let min;
    // 遍历进行对比,注意最后一个值需要与第一个来进行计算
    for(let i=0;i<arr.length;i++){
        let v;
        if(i == arr.length-1){
            // 如果是最后一项,需要与arr[0]比较 
            v = 60*24 - arr[i] + arr[0];
        } else {
            // 如果非最后一项,当前项与后一项比较
            v = arr[i+1] - arr[i];
        }
        if(min==undefined)min = v;
        if(min>v)min = v;
    }
    return min
};