力扣 539. 最小时间差

题目:

分析:

        在一个时间列表中找出最小时间,那我们需要先对其进行一个排序

        首先主要注意的是list的排序是Collections.sort()而不是Arrays.sort()

        排序默认是升序的,所以我们排序后遍历整个列表,找出他的值与前一个值相差的分钟数即可,于是写了一个String转int分钟的方法并引用。

        这边还有一点需要注意,23.59到00.00是只相差一分钟的,所以我们需要考虑这个情况,这时候只要求排序后列表最后一项到24.00与列表第一项到00.00的分钟之和即可

代码:

class Solution {
    public int findMinDifference(List<String> timePoints) {
        Collections.sort(timePoints);
        int min=minute("24:00")-minute(timePoints.get(timePoints.size()-1))+minute(timePoints.get(0))-minute("00:00");
        for(int i=1;i<timePoints.size();i++){
            int n=minute(timePoints.get(i))-minute(timePoints.get(i-1));
            min=Math.min(min,n);
        }
        return min;
    }
    public int minute(String s){
        int n=(s.charAt(0)-'0')*600+(s.charAt(1)-'0')*60+(s.charAt(3)-'0')*10+(s.charAt(4)-'0');
        return n;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值