https://leetcode.com/problems/minimum-time-difference/#/description
找出时间的最小间隔
最小间隔可能出现在00:01和23:40(比如),因此开数组要开两倍的24 * 60,可能存在两个相同时间要注意一下。
public class Solution {
public int findMinDifference(List<String> timePoints) {
int[] cache = new int[24 * 60 * 2 + 1];
int pre = Integer.MAX_VALUE;
for (String s : timePoints) {
int idx = count(s);
pre = Math.min(idx, pre);
cache[idx]++;
cache[idx + 24 * 60]++;
}
int diff = Integer.MAX_VALUE;
for (int i = pre + 1; i < cache.length; i++) {
if (cache[i] != 0) {
if (cache[i] > 1) {
return 0;
}
diff = Math.min(diff, i - pre);
pre = i;
}
}
return diff;
}
private int count(String s) {
String[] arr = s.split(":");
return Integer.parseInt(arr[0]) * 60 + Integer.parseInt(arr[1]);
}
}