剑指 Offer II 035. 最小时间差
创始人
2025-05-30 20:23:48

题目链接

剑指 Offer II 035. 最小时间差 mid

题目描述

给定一个 24小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。

示例 1:

输入:timePoints = [“23:59”,“00:00”]
输出:1

示例 2:

输入:timePoints = [“00:00”,“23:59”,“00:00”]
输出:0

提示:

  • 2<=timePoints<=2∗1042 <= timePoints <= 2 * 10^42<=timePoints<=2∗104
  • timePoints[i]格式为 "HH:MM"

解法:排序

首先我们先将所有的 HH:MM转化为分钟数,存入一个列表 time中,接着再对它按从小到大排序

排序之后,只可能是相连两个时间点 时间差值最小。(还需要考虑首尾相连的时间差值)。

时间复杂度: O(n∗logn)O(n * logn)O(n∗logn)

C++代码:

class Solution {
public:int findMinDifference(vector& timePoints) {vector time;for(auto s:timePoints){int h = stoi(s.substr(0,2));int m = stoi(s.substr(3,2));time.emplace_back(h * 60 + m);}sort(time.begin(),time.end());int ans = 1e9;int n = time.size();for(int i = 0;i < n - 1;i++){ans = min(ans, time[i + 1] - time[i]);}int d = 24 * 60 - time[n - 1] + time[0];ans = min(ans,d);return ans;}
};

Python代码:


class Solution:def findMinDifference(self, timePoints: List[str]) -> int:time = sorted(int(t[:2]) * 60 + int(t[3:]) for t in timePoints)time.append(time[0] + 24 * 60)return min(time[i] - time[i - 1] for i in range(1, len(time)))

相关内容

热门资讯

我来分享「天酷牛牛」万能辅助挂... 我来分享「天酷牛牛」万能辅助挂!原来真的有挂您好:天酷牛牛这款游戏可以开挂,确实是有挂的,需要了解加...
重大通报“乐平正宗麻将是不是有... 您好:乐平正宗麻将这款游戏可以开挂,确实是有挂的,需要软件加微信【69174242】,很多玩家在乐平...
重大通报「新玖天十三水」到底是... 重大通报「新玖天十三水」到底是不是挂!2025火爆一款您好:新玖天十三水这款游戏可以开挂,确实是有挂...
[黑科技分享]“闽乐乐五十K开... [黑科技分享]“闽乐乐五十K开挂辅助神器”!2025火爆一款亲.闽乐乐五十K这款游戏是可以开挂的,确...
重大通报“四川麻将血战到底可以... 您好:四川麻将血战到底这款游戏可以开挂,确实是有挂的,需要软件加微信【69174242】,很多玩家在...