class Solution {
public:
int findMinDifference(vector<string>& timePoints) {
}
};
剑指 Offer II 035. 最小时间差
给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
示例 1:
输入:timePoints = ["23:59","00:00"] 输出:1
示例 2:
输入:timePoints = ["00:00","23:59","00:00"] 输出:0
提示:
2 <= timePoints <= 2 * 104
timePoints[i]
格式为 "HH:MM"
注意:本题与主站 539 题相同: https://leetcode.cn/problems/minimum-time-difference/
原站题解
python3 解法, 执行用时: 32 ms, 内存消耗: 16.6 MB, 提交时间: 2022-11-20 17:36:54
def getMinutes(t: str) -> int: return ((ord(t[0]) - ord('0')) * 10 + ord(t[1]) - ord('0')) * 60 + (ord(t[3]) - ord('0')) * 10 + ord(t[4]) - ord('0') class Solution: def findMinDifference(self, timePoints: List[str]) -> int: n = len(timePoints) if n > 1440: return 0 timePoints.sort() ans = float('inf') t0Minutes = getMinutes(timePoints[0]) preMinutes = t0Minutes for i in range(1, n): minutes = getMinutes(timePoints[i]) ans = min(ans, minutes - preMinutes) # 相邻时间的时间差 preMinutes = minutes ans = min(ans, t0Minutes + 1440 - preMinutes) # 首尾时间的时间差 return ans
golang 解法, 执行用时: 4 ms, 内存消耗: 4 MB, 提交时间: 2022-11-20 17:36:04
func getMinutes(t string) int { return (int(t[0]-'0')*10+int(t[1]-'0'))*60 + int(t[3]-'0')*10 + int(t[4]-'0') } func findMinDifference(timePoints []string) int { if len(timePoints) > 1440 { return 0 } sort.Strings(timePoints) ans := math.MaxInt32 t0Minutes := getMinutes(timePoints[0]) preMinutes := t0Minutes for _, t := range timePoints[1:] { minutes := getMinutes(t) ans = min(ans, minutes-preMinutes) // 相邻时间的时间差 preMinutes = minutes } ans = min(ans, t0Minutes+1440-preMinutes) // 首尾时间的时间差 return ans } func min(a, b int) int { if a > b { return b } return a }
golang 解法, 执行用时: 8 ms, 内存消耗: 4 MB, 提交时间: 2022-11-20 17:35:40
func getMinutes(t string) int { return (int(t[0]-'0')*10+int(t[1]-'0'))*60 + int(t[3]-'0')*10 + int(t[4]-'0') } func findMinDifference(timePoints []string) int { sort.Strings(timePoints) ans := math.MaxInt32 t0Minutes := getMinutes(timePoints[0]) preMinutes := t0Minutes for _, t := range timePoints[1:] { minutes := getMinutes(t) ans = min(ans, minutes-preMinutes) // 相邻时间的时间差 preMinutes = minutes } ans = min(ans, t0Minutes+1440-preMinutes) // 首尾时间的时间差 return ans } func min(a, b int) int { if a > b { return b } return a }
python3 解法, 执行用时: 60 ms, 内存消耗: 16.5 MB, 提交时间: 2022-11-20 17:35:27
def getMinutes(t: str) -> int: return ((ord(t[0]) - ord('0')) * 10 + ord(t[1]) - ord('0')) * 60 + (ord(t[3]) - ord('0')) * 10 + ord(t[4]) - ord('0') class Solution: def findMinDifference(self, timePoints: List[str]) -> int: timePoints.sort() ans = float('inf') t0Minutes = getMinutes(timePoints[0]) preMinutes = t0Minutes for i in range(1, len(timePoints)): minutes = getMinutes(timePoints[i]) ans = min(ans, minutes - preMinutes) # 相邻时间的时间差 preMinutes = minutes ans = min(ans, t0Minutes + 1440 - preMinutes) # 首尾时间的时间差 return ans