题目
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、建立新桶
2、对新桶中进行标识
3、取新桶中有标记的序号的最小间隔
4、增加对开头、结尾时间的计算
*/
class Solution {
public:
int findMinDifference(vector<string>& timePoints) {
vector<bool> flag(24*60,false);
for (auto time:timePoints){
int h=stoi(time.substr(0,2));
int m=stoi(time.substr(3,2));
//如果两个值相等,直接返回0
if(flag[h*60+m]) return 0;
flag[h*60+m]=true;
}
int firstValue=INT_MAX,lastValue=INT_MIN;
int pre=INT_MIN,minStep=INT_MAX;
for(int i=0;i<24*60;i++){
if(flag[i]){
if(firstValue<INT_MAX){
minStep=min(minStep,i-pre);
}
firstValue=min(i,firstValue);
lastValue=max(i,lastValue);
pre=i;
}
}
minStep=min(minStep,24*60-lastValue+firstValue);
return minStep;
}
};