当前位置: 首页 > news >正文

剑指 Offer II 035. 最小时间差

题目链接

剑指 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<=2104
  • timePoints[i]格式为 "HH:MM"

解法:排序

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

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

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

C++代码:

class Solution {
public:int findMinDifference(vector<string>& timePoints) {vector<int> 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)))
http://www.lryc.cn/news/41092.html

相关文章:

  • Spark SQL函数定义【博学谷学习记录】
  • 模拟实现STL容器之vector
  • ChatGPT-4.0 : 未来已来,你来不来
  • Java反射(详细学习笔记)
  • 学习 Python 之 Pygame 开发魂斗罗(十二)
  • Linux下字符设备驱动开发以及流程介绍
  • Web自动化框架断言方法实现
  • 8大核心语句,带你深入python
  • 【批处理】- 批处理自动安装Mysql与Redis
  • 聊聊华为的工作模式
  • 燕山大学-面向对象程序设计实验-实验6 派生与继承:多重派生-实验报告
  • 分割两个字符串得到回文串[抽象--去除具体个性取共性需求]
  • 【LeetCode】1609. 奇偶树、1122. 数组的相对排序
  • 【C++初阶】4. Date类的实现
  • ES6新特性--变量声明
  • 【Django】缓存机制
  • 我的创作纪念日——一年的时间可以改变很多
  • Jetson Nano驱动机器人的左右两路电机
  • 如何通过openssl生成公钥和私钥?
  • Verilog的If语句和Case语句
  • HJ31 单词倒排
  • leetcode——203.移除链表元素
  • GPT-4来袭:开启人工智能新时代
  • 芯微电子IPO终止:业绩开始大幅下滑,王日新、王苟新兄弟不同命
  • 【C++】用手搓的红黑树手搓set和map
  • 【C++】空指针弃NULL用nullptr
  • 【selenium学习】数据驱动测试
  • 嵌入式硬件电路设计的基本技巧
  • Spring MVC 图片的上传和下载
  • 远程工具神器之MobaXterm (小白必看)