昨天的好難,下課後再來想一下
題目: 539. Minimum Time Difference
給你一串24小時制的時間字串vector,求其中時間差最小是多少
思路:
以中午為界,一個時間和另一個時間差最小會是min(time1-time2,time1+24*60-time2),
所以我們可以在處理遇到一個時間時分別塞入time1和time1+24*60進set裡面,如果有
重複則直接return 0,全塞完後依序兩兩相鄰比較。
int getnu(string d){
return (atoi(d.substr(0,2).c_str())*60)+(atoi(d.substr(3,2).c_str()));
}
int findMinDifference(vector<string>& timePoints) {
set<int> pre_ans;
int ans=3700;
int temp=0;
for(auto h:timePoints){
temp=getnu(h);
if(pre_ans.count(temp)){
return 0;
}
else{
pre_ans.insert(temp);
pre_ans.insert(temp+24*60);
}
}
int re=-1;
for(auto k:pre_ans){
if(re==-1){
re=k;
}
else{
if(k-re<ans){
ans=k-re;
}
re=k;
}
}
return ans;
}