JIAKAOBO

LeetCode

venmo
wechat

感谢赞助!

  • ㊗️
  • 大家
  • offer
  • 多多!

Problem

Given a list of 24-hour clock time points in “HH:MM” format, return the minimum minutes difference between any two time-points in the list.

Example 1:

Input: timePoints = ["23:59","00:00"]
Output: 1

Example 2:

Input: timePoints = ["00:00","23:59","00:00"]
Output: 0

Constraints:

  • 2 <= timePoints.length <= 2 * 10^4
  • timePoints[i] is in the format “HH:MM”.

Code

401. Binary Watch

class Solution {
    public int findMinDifference(List<String> timePoints) {
        int total = 24 * 60;
        boolean[] dict = new boolean[total];

        for(String time : timePoints){
            int h = Integer.valueOf(time.split(":")[0]);
            int m = Integer.valueOf(time.split(":")[1]);

            // 重复的时间
            if(dict[h * 60 + m]) return 0;
            
            dict[h * 60 + m] = true;
        }

        int minDiff = total + 1;
        int first = -1;
        int prev = -1;

        for(int i = 0; i < total; i++){
            if(dict[i] == true){
                if(first == -1) {
                    first = i;
                } else {
                    minDiff = Math.min(minDiff, i - prev);                  
                }

                prev = i;
            } 
        }

        minDiff = Math.min(minDiff, (total - (prev - first)));

        return minDiff;
    }
}