Minimum Time Difference

medium array math string sorting

Problem

Given a list of HH:MM 24-hour times, return the smallest minute difference between any two times.

InputtimePoints = ["23:59","00:00"]
Output1
On a 24-hour clock the gap wraps around midnight.

def find_min_difference(times):
    mins = sorted(int(t[:2]) * 60 + int(t[3:]) for t in times)
    best = 24*60 - mins[-1] + mins[0]
    for i in range(1, len(mins)):
        best = min(best, mins[i] - mins[i-1])
    return best
function findMinDifference(times) {
  const m = times.map(t => Number(t.slice(0, 2)) * 60 + Number(t.slice(3))).sort((a, b) => a - b);
  let best = 1440 - m[m.length - 1] + m[0];
  for (let i = 1; i < m.length; i++) best = Math.min(best, m[i] - m[i-1]);
  return best;
}
class Solution {
    public int findMinDifference(List times) {
        int[] m = new int[times.size()];
        for (int i = 0; i < m.length; i++) {
            String t = times.get(i);
            m[i] = Integer.parseInt(t.substring(0, 2)) * 60 + Integer.parseInt(t.substring(3));
        }
        Arrays.sort(m);
        int best = 1440 - m[m.length - 1] + m[0];
        for (int i = 1; i < m.length; i++) best = Math.min(best, m[i] - m[i-1]);
        return best;
    }
}
int findMinDifference(vector& times) {
    vector m;
    for (auto& t : times) m.push_back(stoi(t.substr(0, 2)) * 60 + stoi(t.substr(3)));
    sort(m.begin(), m.end());
    int best = 1440 - m.back() + m.front();
    for (int i = 1; i < (int)m.size(); i++) best = min(best, m[i] - m[i-1]);
    return best;
}
Time: O(n log n) Space: O(n)