leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0539.cpp (1437B)


0 class Solution {
1 static const int day = 24 * 60;
3 static inline int val(const char *time) { return (time[0] & 0xF) * 10 + (time[1] & 0xF); }
5 static inline int val(const string &time) { return val(time.c_str()) * 60 + val(time.c_str() + 3); }
7 public:
8 int findMinDifference(const vector<string> &timePoints) {
9 const int n = size(timePoints);
10 vector<int> time(n);
12 for (int i = 0; i < n; i++)
13 time[i] = val(timePoints[i]);
14 sort(begin(time), end(time));
16 int res = day - time.back() + time.front();
17 for (int i = 1; i < n; i++)
18 res = min(res, time[i] - time[i - 1]);
20 return res;
21 }
22 };
24 // No extra memory, little bit slower
25 class Solution {
26 static const int day = 24 * 60;
28 static inline int val(const char *time) { return (time[0] & 0xF) * 10 + (time[1] & 0xF); }
30 static inline int val(const string &time) { return val(time.c_str()) * 60 + val(time.c_str() + 3); }
32 public:
33 int findMinDifference(vector<string> &timePoints) {
34 const int n = size(timePoints);
35 sort(begin(timePoints), end(timePoints));
37 int res = INT_MAX;
38 int first = val(timePoints[0]), prev = first;
39 for (int i = 1; i < n; i++) {
40 const int crnt = val(timePoints[i]);
41 res = min(res, crnt - prev);
42 prev = crnt;
43 }
45 return min(res, first + (day - prev));
46 }
47 };