0
点赞
收藏
分享

微信扫一扫

【每日一题见微知著】贪心算法——最小时间差(超简单)

奋斗De奶爸 2022-01-20 阅读 19

539. 最小时间差-Mid

题目描述:

给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。允许跨天差,23.59和00.01之间最小时间差为2

解题思路:

排序+贪心——对时间序列排序,根据贪心策略——一定有排序好的相邻时间之间差值最小

代码实现:

class Solution {
    public int findMinDifference(List<String> timePoints) {
        //保存分钟数
        int[] t=new int[timePoints.size()];
        int i=0;
        //将时间字符转化为分钟数
        for(String s:timePoints){
            t[i]+=(s.charAt(0)-'0')*10*60;
            t[i]+=(s.charAt(1)-'0')*60;
            t[i]+=(s.charAt(3)-'0')*10;
            t[i]+=(s.charAt(4)-'0');
            i++;
        }

        //升序排序
        Arrays.sort(t);
        int ans=24*60;
        //相邻序号做差,求最小差
        for(int index=0;index<i-1;index++){
            ans=Math.min(t[index+1]-t[index],ans);
        }

        //注意边界,跨天最小差
        ans=Math.min(t[0]+24*60-t[i-1],ans);
        return ans;
    }
}

结尾

举报

相关推荐

0 条评论