Example 1:
Input: ["23:59","00:00"] Output: 1
Note:
- The number of time points in the given list is at least 2 and won't exceed 20000.
- The input time is legal and ranges from 00:00 to 23:59.
class Solution { public int findMinDifference(List<String> timePoints) { boolean[] minutes = new boolean[1440]; for (String time : timePoints) { int minute = convertToMinutes(time); if (minutes[minute]) { return 0; } minutes[minute] = true; } // iterate through the minutes and find the minimum findMinDifference // int prev = -1; int first = -1; int curr = -1; int min = Integer.MAX_VALUE; for (int i = 0; i < minutes.length; i++) { if (prev == -1) { if (minutes[i] == true) { prev = i; first = i; } continue; } if (minutes[i]) { curr = i; int diff = i - prev; diff = Math.min(diff, 1440 - diff); min = Math.min(min, diff); prev = i; } } int diff = curr - first; min = Math.min(min, Math.min(diff, 1440 - diff)); return min; } private int convertToMinutes(String s) { String[] tokens = s.split("[:]"); int hour = Integer.parseInt(tokens[0]); int minute = Integer.parseInt(tokens[1]); return hour * 60 + minute; } }
No comments:
Post a Comment