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