题目描述:
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:
1. The number of time points in the given list is at least 2 and won't exceed 20000.
2. The input time is legal and ranges from 00:00 to 23:59.
class Solution {
public:
int findMinDifference(vector<string>& timePoints) {
if(timePoints.size()>1440) return 0; //所有可能的分钟数只有1440个
unordered_set<int> hash;
int min_minutes=INT_MAX;
int max_minutes=INT_MIN;
for(string s:timePoints) //记录所有的分钟数和最大最小值
{
int minutes=stoi(s.substr(0,2))*60+stoi(s.substr(3));
min_minutes=min(min_minutes,minutes);
max_minutes=max(max_minutes,minutes);
if(hash.count(minutes)) return 0;
else hash.insert(minutes);
}
int result=INT_MAX;
int pre=min_minutes;
for(int i=min_minutes+1;i<=max_minutes;i++)
{
if(hash.count(i))
{
result=min(result,i-pre);
pre=i;
}
}
result=min(result,1440-(max_minutes-min_minutes)); //还需要考虑首尾的差值
return result;
}
};