解题思路:
既然是返回时间差以分钟表示,不如首先就把所有的时间都转换成分钟存储,然后排序,对于前后两个时间节点求差取最小值,最后还要注意最早和最迟时间的差值(比如一个是第二天早上,一个是第一天的深夜),代码如下:
class Solution {
public:
int findMinDifference(vector<string>& timePoints) {
int n = timePoints.size();
vector<int> times;
for(auto& timePoint : timePoints) {
int h = (timePoint[0] - '0') * 10 + (timePoint[1] - '0');
int m = (timePoint[3] - '0') * 10 + (timePoint[4] - '0');
times.push_back(h * 60 + m);
}
sort(times.begin(), times.end());
int ans = INT_MAX;
for(int i = 1; i < n; i ++) {
ans = min(ans, times[i] - times[i - 1]);
}
return min(ans, 24 * 60 - times[n - 1] + times[0]);
}
};