力扣539:最小时间差
2022年01月18日 力扣每日一题
题目
给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
示例 1:
输入:timePoints = ["23:59","00:00"] 输出:1
示例 2:
输入:timePoints = ["00:00","23:59","00:00"] 输出:0
提示:
2 <= timePoints.length <= 2 * 104
timePoints[i]
格式为 "HH:MM"
Related Topics
个人解法
import java.util.List;
class Solution {
public int findMinDifference(List<String> timePoints) {
int[] times = new int[2880];
for (String timePoint : timePoints) {
String[] strs = timePoint.split(":");
int time = Integer.parseInt(strs[0]) * 60 + Integer.parseInt(strs[1]);
if (times[time] == 1) {
return 0;
}
times[time] = 1;
times[time + 1440] = 1;
}
if (times[0] == 1 && times[1439] == 1) {
return 1;
}
int min = 1440;
int bef = 0;
for (int i = 1; i < 2880; i++) {
if (times[i] == 1) {
if (bef > 0) {
min = Math.min(min, i - bef);
}
if (i > 1439) {
break;
}
bef = i;
}
}
return min;
}
}
from typing import List
class Solution:
def findMinDifference(self, timePoints: List[str]) -> int:
times = [0] * 2880
for timePoint in timePoints:
time = int(timePoint[:2]) * 60 + int(timePoint[-2:])
if times[time] == 1:
return 0
times[time] = 1
times[time + 1440] = 1
result = 1440
bef = 0
for i in range(2880):
if times[i] == 1:
if bef > 0:
result = min(result, i - bef)
if i > 1439:
break
bef = i
return result
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 龙儿之家!
评论
TwikooGitalk