剑指 Offer II 035. 最小时间差

  1. 将字符串转换为以分钟为单位的数组。
  2. 对数组进行排序。
  3. 两两比较。注意,尾部需要经过 24 * 60 格式化一下,即 time = 24 * 60 - time[n - 1]

    class Solution {
     public int findMinDifference(List<String> timePoints) {
         // 排序
         if (timePoints == null || timePoints.size() == 0 || timePoints.size() > 60 * 24) return 0;
         int n = timePoints.size();
         int[] times = new int[n];
    
         for (int i = 0; i < n; i++) {
             String[] timeStr = timePoints.get(i).split(":");
             // 转换成分
             times[i] = Integer.parseInt(timeStr[0]) * 60 + Integer.parseInt(timeStr[1]);
         }
    
         // 排序
         Arrays.sort(times);
    
         int min = Integer.MAX_VALUE;
         for (int i = 1; i < n; i++) {
             min = Math.min(min, times[i] - times[i - 1]);
         }
    
         min = Math.min(min, 24 * 60 - times[n - 1] + times[0]);
    
         return min;
     }
    }