for (int i = 0; i < m; i++) { String t = timePoints.get(i); String[] ts = t.split(":"); int h1 = Integer.valueOf(ts[0]); int m1 = Integer.valueOf(ts[1]); int hm = h1 * 60 + m1; arr[i] = hm; }
0——|——–|——–|———-|———-|———24
对于数组中的数据,如果遍历,就是取任意两个数据 计算 B-A和 24-B + A-0的最小值
但是如果先排序,则B-A的最小值只会是相邻之间产生
24-B + A-0取最小值,则B是最大值,A要是最小值,即首位
1 2 3 4 5 6 7
Arrays.sort(arr); int res = Integer.MAX_VALUE; for (int i = 0; i < m - 1; i++) { res = Math.min(arr[i + 1] - arr[i], res); } res = Math.min(24 * 60 - arr[m - 1] + arr[0], res); return res;
classSolution{ publicintfindMinDifference(List<String> timePoints){ if (timePoints.size() < 2) { return0; } int m = timePoints.size(); int[] arr = newint[m];
for (int i = 0; i < m; i++) { String t = timePoints.get(i); String[] ts = t.split(":"); int h1 = Integer.valueOf(ts[0]); int m1 = Integer.valueOf(ts[1]); int hm = h1 * 60 + m1; arr[i] = hm; }
Arrays.sort(arr);
int res = Integer.MAX_VALUE;
for (int i = 0; i < m - 1; i++) { res = Math.min(arr[i + 1] - arr[i], res); } res = Math.min(24 * 60 - arr[m - 1] + arr[0], res); return res; } }