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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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