剑指 Offer II 035. 最小时间差
题目要求:
给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
解题思路:
思路较为简单,将字符串表示的时间转化为分钟表示,并从小到大排序存储在新的数组中。(注意:在排序过后的数组中,我们需要在末尾加入最小的分钟数+24*60。 最后就是循环数组找到前后差距最小的分钟数。
class Solution {
public:
int findMinDifference(vector<string>& timePoints) {
vector<int> mtime;
for (string t:timePoints){
mtime.push_back( stoi( t.substr(0,2) )*60+stoi( t.substr(3) ) );
}
sort(mtime.begin(),mtime.end());
mtime.push_back(mtime[0]+24*60);
int res=24*60;
for(int t=1;t<mtime.size();t++){
res=min(res,mtime[t]-mtime[t-1]);
}
return res;
}
};