最小时间差

给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。

示例 1:

输入:timePoints = ["23:59","00:00"]
输出:1
示例 2:

输入:timePoints = ["00:00","23:59","00:00"]
输出:0
 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-time-difference
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我的思路是将每一个输入的时间转换成分钟数,然后正序排序,用后一个时间减去前一个时间的时间差,再将他们相互比较,最终将最小时间差求出。

鉴于这是一个leetcode算法题,所以想用一些方法将范围缩小,因为24小时的分钟数最大是1440,所以当输入数大于1440或小于2时,则返回0,减少计算时间。

class Solution {
    public int findMinDifference(List<String> timePoints) {
        if(timePoints.size()>1440||timePoints.size()<2)
            return 0;
        //当时间数小于1440时,则将输入的时间数传给time数组
        int time[]=new int[timePoints.size()];
        int i;
        //将输入时间转换成分钟数,substring(0,2)是取输入时间数的前两个数
        for(i=0;i<timePoints.size();i++){
            time[i]=Integer.parseInt(timePoints.get(i).substring(0,2))*60+Integer.parseInt(timePoints.get(i).substring(3));
        }
         //数组正序排序
            Arrays.sort(time);
         //用第一个时间数减去最后一个时间数,再加1440,是排除00:00的情况
            int ans=time[0]-time[time.length-1]+1440;
         for(i=1;i<time.length;i++)
            {
                ans=Math.min(ans,time[i]-time[i-1]);
            }   
            return ans;
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值