给定一个 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]);//再将最小值和 (末尾减开头)作比较 } }