昨天的好難,下課後再來想一下 題目: 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; } -- ※ 發信站: 批踢踢實業坊(ptt.org.tw), 來自: 118.167.20.227 (臺灣) ※ 文章網址: https://ptt.org.tw/Marginalman/M.1726448698.A.117