https://leetcode-cn.com/problems/minimum-time-difference/
给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示。
示例 1:
输入: [“23:59”,“00:00”]
输出: 1
备注:
列表中时间数在 2~20000 之间。
每个时间取值在 00:00~23:59 之间。
用stringstream好像有点慢了,直接用数组模拟会快一些
class Solution
{
public:
int str2int(string str)
{
stringstream ss(str);
int ret;
ss >> ret;
return ret;
}
int findMinDifference(vector<string> &timePoints)
{
vector<string> v;
sort(timePoints.begin(), timePoints.end());
int n = timePoints.size();
int ans = 1440;
for (int i = 1; i < n; i++)
{
int h = str2int(timePoints[i].substr(0, 2)) * 60, m = str2int(timePoints[i].substr(3, 2));
int lh = str2int(timePoints[i - 1].substr(0, 2)) * 60, lm = str2int(timePoints[i - 1].substr(3, 2));
if (h + m - lh - lm < ans)
ans = h + m - lh - lm;
}
int h = (str2int(timePoints[0].substr(0, 2)) + 24) * 60, m = str2int(timePoints[0].substr(3, 2));
int lh = str2int(timePoints[n - 1].substr(0, 2)) * 60, lm = str2int(timePoints[n - 1].substr(3, 2));
if (h + m - lh - lm < ans)
ans = h + m - lh - lm;
return ans;
}
};