Leetcode 539. 最小时间差
难度
中等
题目
https://leetcode-cn.com/problems/minimum-time-difference/
解法
排序
现将time从小到大排序,然后依次在相邻的time中找到最小值。
要注意头尾需要进行一次比较,因为24小时制的时间是一个环。
还需要判断一下list的size,如果size>24*60的话,说明里面一定有重复的时间,直接返回0。
class Solution {
public int findMinDifference(List<String> time) {
int size = time.size();
if(size> 24 * 60)
return 0;
Collections.sort(time);
int differ = Integer.MAX_VALUE;
for (int i = 0; i < time.size(); i++) {
int h1 = Integer.parseInt(time.get(i % size).substring(0, 2));
int m1 = Integer.parseInt(time.get(i % size).substring(3));
int h2 = Integer.parseInt(time.get((i + 1) % size).substring(0, 2));
int m2 = Integer.parseInt(time.get((i + 1) % size).substring(3));
int curDiffer = Math.abs(h2 * 60 + m2 - h1 * 60 - m1);
if (curDiffer > 24 * 60 / 2)
curDiffer = Math.abs(24 * 60 - curDiffer);
differ = curDiffer < differ ? curDiffer : differ;
}
return differ;
}
}