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.
解法1: O(NlogN)
很直观的就是把array转化为分钟数的数组,然后两两比较,同时别忘了比较头和尾巴。
C++
Java
解法2: O(N)
借鉴了bucket sort 的解法,因为这里分钟数的总个数是固定的。可以用一个60 * 24 = 1440的数组来记录每一个分钟数是否出现。
如果一个分钟数出现两次,那么最小值一定是0.
同时需要维护一个first和last来记录第一个和最后一个出现过的分钟数。
最后比较一下相邻出现过的分钟数以及头尾就可以了。
Java