Leetcode 539. 最小时间差

Leetcode 539. 最小时间差

难度

中等

题目

https://leetcode-cn.com/problems/minimum-time-difference/

解法

排序

现将time从小到大排序,然后依次在相邻的time中找到最小值。

要注意头尾需要进行一次比较,因为24小时制的时间是一个环。

还需要判断一下list的size,如果size>24*60的话,说明里面一定有重复的时间,直接返回0。

class Solution {
    public int findMinDifference(List<String> time) {
        int size = time.size();
        if(size> 24 * 60)
            return 0;
        Collections.sort(time);
        int differ = Integer.MAX_VALUE;
        for (int i = 0; i < time.size(); i++) {
            int h1 = Integer.parseInt(time.get(i % size).substring(0, 2));
            int m1 = Integer.parseInt(time.get(i % size).substring(3));
            int h2 = Integer.parseInt(time.get((i + 1) % size).substring(0, 2));
            int m2 = Integer.parseInt(time.get((i + 1) % size).substring(3));
            int curDiffer = Math.abs(h2 * 60 + m2 - h1 * 60 - m1);
            if (curDiffer > 24 * 60 / 2)
                curDiffer = Math.abs(24 * 60 - curDiffer);
            differ = curDiffer < differ ? curDiffer : differ;
        }
        return differ;
    }
}
posted @ 2022-01-18 15:28  Dre_am_tale  阅读(19)  评论(0编辑  收藏  举报