Leedcode刷题 539. 最小时间差


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

思路:

  先将String列表中的时间全部化为分钟数,然后排序,然后for循环寻找最小差值

 注意:不要忘记比较末尾和首部的差值,如测试用例

class Solution {
    public int findMinDifference(List<String> timePoints) {
        int min=Integer.MAX_VALUE;//定义最小值
        int []minute=new int [timePoints.size()];//创建存放分钟数的数组
        for(int i=0;i<timePoints.size();i++)
            minute[i]=Integer.valueOf(timePoints.get(i).substring(0,2)) * 60+Integer.valueOf(timePoints.get(i).substring(3,5));
//用到list.get(i)来访问列表元素 和substring(int a,int b)来截取子串 后转化为Integer再乘60 存入数组中,0-2是小时,3-5是分钟
  
    Arrays.sort(minute);//排序
for(int i=0;i<minute.length-1;i++){
            min=Math.min(min,minute[i+1]-minute[i]);//寻找最小差值
        }
        return Math.min(min,1440-minute[minute.length-1]+minute[0]);//再将最小值和 (末尾减开头)作比较
    }
}

 

posted @ 2020-08-04 11:35  nilbook  阅读(141)  评论(0编辑  收藏  举报