解法一

现将时间格式转换为以分钟为单位的整数,排序后求最小差值,注意最大值和最小值之间的差有两种算法,其中一种要补上一天的时间1440分钟。

  1. import java.util.Arrays;
  2. import java.util.List;
  3. class Solution {
  4. public int findMinDifference(List<String> timePoints) {
  5. int[] times = new int[timePoints.size()];
  6. String[] hourAndMinute = new String[2];
  7. for (int i = 0; i < timePoints.size(); ++i) {
  8. hourAndMinute = timePoints.get(i).split(":");
  9. times[i] = Integer.parseInt(hourAndMinute[0]) * 60 + Integer.parseInt(hourAndMinute[1]);
  10. }
  11. Arrays.sort(times);
  12. int min = times[0] - times[times.length - 1] + 1440;
  13. for (int i = 1; i < times.length; ++i) {
  14. min = Math.min(min, times[i] - times[i - 1]);
  15. }
  16. return min;
  17. }
  18. }