跳到主要内容

LCR035.最小时间差

链接:LCR035.最小时间差
难度:Medium
标签:数组、数学、字符串、排序
简介:给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。

题解 1 - cpp

  • 编辑时间:2021-12-23
  • 执行用时:16ms
  • 内存消耗:13.6MB
  • 编程语言:cpp
  • 解法介绍:排序后遍历,多塞一倍时间进去。
class Solution {
public:
int toMin(string s) {
int hor = (s[0] - '0') * 10 + s[1] - '0';
int min = (s[3] - '0') * 10 + s[4] - '0';
return hor * 60 + min;
}
int findMinDifference(vector<string>& timePoints) {
vector<int> data;
for (int i = 0; i < timePoints.size(); i++) {
int min = toMin(timePoints[i]);
data.push_back(min);
data.push_back(24 * 60 + min);
}
sort(data.begin(), data.end());
int ans = INT_MAX;
for (int i = 1; i < data.size(); i++) {
ans = min(ans, data[i] - data[i - 1]);
}
return ans;
}
};