题目:
分析:
在一个时间列表中找出最小时间,那我们需要先对其进行一个排序
首先主要注意的是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;
}
}