Re: [闲聊] 每日leetcode

楼主: enmeitiryous (enmeitiryous)   2024-09-16 09:04:56
昨天的好难,下课后再来想一下
题目: 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;
}

Links booklink

Contact Us: admin [ a t ] ucptt.com