给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。
示例 1:
输入: ["23:59","00:00"]
输出: 1
备注:
列表中时间数在 2~20000 之间。
每个时间取值在 00:00~23:59 之间。
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-time-difference 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution {
public:
int findMinDifference(vector<string>& timePoints) {
int mins[1440] = {0};
int m, i;
for(auto& s : timePoints)
{
m = ((s[0]-'0')*10+s[1]-'0')*60+(s[3]-'0')*10+s[4]-'0';
if(mins[m] != 0)//已经存在
return 0;
mins[m] = 1;
}
int first, prev, last, ans = 1440;
for(i = 0; i < 1440 && mins[i] == 0; i++){}
first = prev = i++;
for( ; i < 1440; ++i)
{
if(mins[i] == 1)
{
last = i;
ans = min(ans, last-prev);
prev = last;
}
}
return min(ans, first-last+1440);
}
};