2022年01月18日 力扣每日一题

题目

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

示例 1:

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

示例 2:

输入:timePoints = ["00:00","23:59","00:00"]
输出:0

提示:

  • 2 <= timePoints.length <= 2 * 104
  • timePoints[i] 格式为 "HH:MM"
Related Topics
  • 数组
  • 数学
  • 字符串
  • 排序
  • 个人解法

    import java.util.List;
    
    class Solution {
        public int findMinDifference(List<String> timePoints) {
            int[] times = new int[2880];
            for (String timePoint : timePoints) {
                String[] strs = timePoint.split(":");
                int time = Integer.parseInt(strs[0]) * 60 + Integer.parseInt(strs[1]);
                if (times[time] == 1) {
                    return 0;
                }
                times[time] = 1;
                times[time + 1440] = 1;
            }
            if (times[0] == 1 && times[1439] == 1) {
                return 1;
            }
            int min = 1440;
            int bef = 0;
            for (int i = 1; i < 2880; i++) {
                if (times[i] == 1) {
                    if (bef > 0) {
                        min = Math.min(min, i - bef);
                    }
                    if (i > 1439) {
                        break;
                    }
                    bef = i;
                }
            }
            return min;
        }
    }
    from typing import List
    
    
    class Solution:
        def findMinDifference(self, timePoints: List[str]) -> int:
            times = [0] * 2880
            for timePoint in timePoints:
                time = int(timePoint[:2]) * 60 + int(timePoint[-2:])
                if times[time] == 1:
                    return 0
                times[time] = 1
                times[time + 1440] = 1
            result = 1440
            bef = 0
            for i in range(2880):
                if times[i] == 1:
                    if bef > 0:
                        result = min(result, i - bef)
                    if i > 1439:
                        break
                    bef = i
            return result