[LeetCode] 539. Minimum Time Difference
Given a list of 24-hour clock time points in "Hour:Minutes" format, find the minimum minutes difference between any two time points in the list.
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.
Thought process:
Convert every time point to minutes. Sort the minutes. Get the minimum difference between any neighboring minutes. Also compare the minimum difference so far with the difference between the first and last minutes.
Solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | public class Solution { public int findMinDifference(List<String> timePoints) { int[] minutes = new int[timePoints.size()]; for (int i = 0; i < timePoints.size(); i++) { String time = timePoints.get(i); int hour = Integer.parseInt(time.substring(0, 2)); int minute = Integer.parseInt(time.substring(3, 5)); minutes[i] = hour * 60 + minute; } Arrays.sort(minutes); int min = Integer.MAX_VALUE; for (int i = 1; i < minutes.length; i++) { min = Math.min(min, minutes[i] - minutes[i - 1]); } min = Math.min(min, minutes[0] + 24 * 60 - minutes[minutes.length - 1]); return min; } } |
Time complexity: O(nlogn).
Comments
Post a Comment