Skip to content

539. 最小时间差

解题过程

INFO

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

javascript
/**
 * @link https://leetcode.cn/problems/minimum-time-difference/
 * @title 539. 最小时间差
 * @description 给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示
 * @param {string[]} timePoints
 * @return {number}
 */
// 解法一
// 思路:遍历时间表转换成分钟然后进行有小到大排序,再遍历数据两两就和对比最小值即可,注意最后返回还需要进行一次判断,防止最小值跟最大值是零点上下差距
var findMinDifference = function(timePoints) {
  const arr = timePoints.map(item => {
    let times = item.split(':')
    return parseInt(times[0]) * 60 + parseInt(times[1])
  })

  arr.sort((a, b) => a - b)
  const maxMin = 1440
  let min = maxMin
  for (let i = 1; i < arr.length; i++) {
    min = Math.min(min, arr[i] - arr[i - 1])
  }

  return Math.min(min, arr[0] + maxMin - arr[arr.length - 1])
}

// const result = findMinDifference(["23:59","00:00"]) // 1
// const result = findMinDifference(["00:00","23:59","00:00"]) // 0
// const result = findMinDifference(["01:01","02:01","03:00"]) // 59
// const result = findMinDifference(["12:01","00:10","00:01"]) // 9
const result = findMinDifference(["05:31","22:08","00:35"]) // 147
console.log(result)

解题感受

🐑 的第二天,状态不是很好,只写了一种解法,不过目前也只想到一种了,看了跟官方解题思路方法一差不多,解这种题目,基本思路也是通过大小排序,然后两两计算最小值,然后首尾计算最小值就好了

优质题解