最小时间差

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

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

  • 输出:1

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

  • 输出:0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const getTime = str => {
const [hour, min] = str.split(':');
return Number(hour) * 60 + Number(min);
};

const findMinDifference = timePoints => {
// 所有时间转化为分钟
const mins = timePoints.map(item => getTime(item));

// 升序排序
mins.sort((a, b) => a - b);
const len = mins.length;

// 初始化,前两个间隔、首位间隔的较小者
let res = Math.min(mins[1] - mins[0], mins[0] + 1440 - mins[len - 1]);
for (let i = 2; i < len; i++) {
res = Math.min(res, mins[i] - mins[i - 1]);
}
return res;
};