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.
笨方法
思路:将每个字符串转换为对应的分钟数,其中有一个点需要注意的是,对于23:59和00:00这个时间点上两者只是相差1,因此,我将所有小于12:00的时间都加上720分钟,添加到排好序的数组的末尾。
不多说了,上代码。。。没想到这也可以。
int tiqushuzi(string &str){
int temp1 = (str[0] - '0') * 10 + (str[1] - '0');
int temp2 = (str[3] - '0') * 10 + (str[4] - '0');
return temp1 * 60 + temp2;
}
int findMinDifference(vector<string>& timePoints) {
multiset<int> res;
for (auto x : timePoints){
res.insert(tiqushuzi(x));
}
vector<int> data(res.begin(), res.end());
if (data[0] < 720 && data[data.size() - 1] > 720)
for (int i = 0; data[i] < 720; i++){
data.push_back(data[i] + 1440);
}
int minus = INT_MAX;
for (int i = 0; i < data.size() - 1;i++){
if (data[i + 1] == data[i])return 0;
minus = min(minus, (data[i + 1] - data[i]));
}
return minus;
}