Given a list of 24-hour clock time points in <strong>&quot;HH:MM&quot;</strong> format, return <em>the minimum <b>minutes</b> difference between any two time-points in the list</em>.
<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre><strong>Input:</strong> timePoints = ["23:59","00:00"]
<strong>Output:</strong> 1
</pre><p><strong class="example">Example 2:</strong></p>
<pre><strong>Input:</strong> timePoints = ["00:00","23:59","00:00"]
<strong>Output:</strong> 0
</pre>
<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>2 &lt;= timePoints.length &lt;= 2 * 10<sup>4</sup></code></li>
	<li><code>timePoints[i]</code> is in the format <strong>&quot;HH:MM&quot;</strong>.</li>
</ul>

class Solution {
public:
    int findMinDifference(vector<string>& timePoints) {
        sort(begin(timePoints), end(timePoints));

        int res = INT_MAX;
        for (int i = 1; i < timePoints.size(); ++i) {
            res = min(res, getDiff(timePoints[i - 1], timePoints[i]));
        }
        if (timePoints.size() > 2) {
            res = min(res, getDiff(timePoints[0], timePoints.back()));
        }

        return res;
    }

private:
    int getDiff(const string& a, const string& b) {
        int ma = getMinute(a);
        int mb = getMinute(b);

        const int MIN_IN_A_DAY = 24 * 60;
        int diff = min(mb - ma, (ma + MIN_IN_A_DAY - mb) % MIN_IN_A_DAY);
        return diff;
    }

    int getMinute(const string& t) {
        return ((t[0] - '0') * 10 + (t[1] - '0')) * 60 + ((t[3] - '0') * 10 + (t[4] - '0'));
    }
};
16900