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; 2 3 static inline int val(const char *time) { return (time[0] & 0xF) * 10 + (time[1] & 0xF); } 4 5 static inline int val(const string &time) { return val(time.c_str()) * 60 + val(time.c_str() + 3); } 6 7 public: 8 int findMinDifference(const vector<string> &timePoints) { 9 const int n = size(timePoints); 10 vector<int> time(n); 11 12 for (int i = 0; i < n; i++) 13 time[i] = val(timePoints[i]); 14 sort(begin(time), end(time)); 15 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]); 19 20 return res; 21 } 22 }; 23 24 // No extra memory, little bit slower 25 class Solution { 26 static const int day = 24 * 60; 27 28 static inline int val(const char *time) { return (time[0] & 0xF) * 10 + (time[1] & 0xF); } 29 30 static inline int val(const string &time) { return val(time.c_str()) * 60 + val(time.c_str() + 3); } 31 32 public: 33 int findMinDifference(vector<string> &timePoints) { 34 const int n = size(timePoints); 35 sort(begin(timePoints), end(timePoints)); 36 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 } 44 45 return min(res, first + (day - prev)); 46 } 47 };