Problem
Given a list of 24-hour clock time points in “Hour:Minutes” format, find the minimum minutes difference between any two time points in the list.
Example 1:
Input: ["23:59","00:00"] Output: 1
Note:
- The number of time points in the given list is at least 2 and won’t exceed 20000.
- The input time is legal and ranges from 00:00 to 23:59.
Solution
Time complexity: O(nlog1440)
Space complexity: O(n)
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Author: huahua // Running time: 16 ms class Solution { public: int findMinDifference(vector<string>& timePoints) { constexpr int kMins = 24 * 60; set<int> seen; for (const string& time : timePoints) { int m = stoi(time.substr(0, 2)) * 60 + stoi(time.substr(3)); if (!seen.insert(m).second) return 0; } int ans = (*seen.begin() - *seen.rbegin() + kMins) % kMins; const int* l = nullptr; for (const int& t : seen) { if (l) ans = min(ans, t - *l); l = &t; } return ans; } }; |
请尊重作者的劳动成果,转载请注明出处!花花保留对文章/视频的所有权利。
如果您喜欢这篇文章/视频,欢迎您捐赠花花。
If you like my articles / videos, donations are welcome.
Be First to Comment