539. 最小时间差-Mid
题目描述:
给定一个 24 小时制(小时:分钟 “HH:MM”)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。允许跨天差,23.59和00.01之间最小时间差为2
解题思路:
排序+贪心——对时间序列排序,根据贪心策略——一定有排序好的相邻时间之间差值最小
代码实现:
class Solution {
public int findMinDifference(List<String> timePoints) {
//保存分钟数
int[] t=new int[timePoints.size()];
int i=0;
//将时间字符转化为分钟数
for(String s:timePoints){
t[i]+=(s.charAt(0)-'0')*10*60;
t[i]+=(s.charAt(1)-'0')*60;
t[i]+=(s.charAt(3)-'0')*10;
t[i]+=(s.charAt(4)-'0');
i++;
}
//升序排序
Arrays.sort(t);
int ans=24*60;
//相邻序号做差,求最小差
for(int index=0;index<i-1;index++){
ans=Math.min(t[index+1]-t[index],ans);
}
//注意边界,跨天最小差
ans=Math.min(t[0]+24*60-t[i-1],ans);
return ans;
}
}