539.最小时间差-LeetCode
难度:中等
目录
一、问题描述
二、解题思想
三、解题
1、判断极端情况
2、代码实现
一、问题描述
这里我直接采用的LeetCode上面的问题描述。
给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。
下面给出示例:
提示:
2 <= timePoints.length <= 2 * 104
timePoints[i]
格式为 "HH:MM"
二、解题思想
看完题目,我首先想到的就是,首先对 timePoints 排序,排序完之后在比较相邻的两个时间之间的差取出最小的转换为分钟然后 return 就可以了。
比较核心的问题就是,如果 两个时间分别是 00:00 和 23.59 那么其最小时间差的 return 应该是 1。所以对与这种特殊情况我们需要拎出来,单独计算首尾两个时间的时间差。
刚开始没有考虑到首尾的情况,给出了错误的解答。0.0
以下给出错误代码供思考:
int findMinDifference(vector<string>& timePoints) {//MINMINUTES保存最小时间差(分钟)int MINMINUTES = 1440;sort(timePoints.begin(), timePoints.end());for(int i = 0; i < timePoints.size()-1; i++){int currentMinutes = 60* ((int)timePoints[i][0]*10 + (int)timePoints[i][1]) + (int)timePoints[i][3]*10 + (int)timePoints[i][4];int nextMinutes = 60* ((int)timePoints[i+1][0]*10 + (int)timePoints[i+1][1]) + (int)timePoints[i+1][3]*10 + (int)timePoints[i+1][4];MINMINUTES = min(nextMinutes - currentMinutes,MINMINUTES);}//这里的min函数 中 的1440-MINMINUTES是我一开始用来解决首尾差问题的,//但是不适用与首尾差过大的情况return min(MINMINUTES,1440-MINMINUTES);}
三、解题
1、判断极端情况
这里需要考虑的极端情况就是最大与最小时间的差的问题 即 00:00 与 23:30 相差不是1410 而是 30。
2、代码实现
这里因为上面的太乱了,写了一个函数来返回分钟数
这里给出的极端情况的解决办法:首时间+1440-尾时间
//返回格式为 XX:XX 字符串格式时间的分钟数
int getTimeToMinutes(string time){return ((int)time[0]*10 +(int)time[1]) * 60 + (int)time[3]*10 +(int)time[4];}
int findMinDifference(vector<string>& timePoints) {int MINMINUTES = 1440;sort(timePoints.begin(), timePoints.end());for(int i = 0; i < timePoints.size()-1; i++){int currentMinutes = getTimeToMinutes(timePoints[i]);int nextMinutes = getTimeToMinutes(timePoints[i + 1]);MINMINUTES = min(nextMinutes - currentMinutes,MINMINUTES);}//返回顺序最小分钟,和首尾分钟之间的最小分钟return min(MINMINUTES,getTimeToMinutes(timePoints[0]) + 1440 - getTimeToMinutes(timePoints[timePoints.size()-1]));}
以上就是对于本题,我查看资料以及自己思考所编写出来得题解,如果有更好的方法,欢迎大家在下方留言,一起讨论。
539.最小时间差-LeetCode相关推荐
- Java 第 21 课 1200. 最小绝对差 539. 最小时间差
第 21 课 1200. 最小绝对差 539. 最小时间差 基础知识 Java ArrayList 方法 List.of 和 Arrays.asList ArrayList 排序 1200. 最小绝对 ...
- LeetCode 539. 最小时间差(哈希)
1. 题目 给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并已分钟数表示. 示例 1: 输入: ["23:59","00:00&quo ...
- Java每日一题——>剑指 Offer II 035. 最小时间差(三解,蛮力,排序,哈希)
文章目录 题目 题解1(蛮力法) 代码实现 复杂度分析 题解2(排序) 代码实现 复杂度分析 题解3(哈希表) 代码实现 复杂度分析 题目 这是LeetCode上的 [035,最小时间差],难度为 [ ...
- mysql 最小时间 最大时间_leetcode539_go_最小时间差
题目 给定一个 24 小时制(小时:分钟 "HH:MM")的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示. 示例 1:输入:timePoints = ["2 ...
- php旋转数组找出最小的,LeetCode 153 寻找旋转排序数组中的最小值
链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ...
- Python 实例教学_ 03_列表
Python 实例教程 Python 实例教学_ 03_列表 第十三课 [844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-c ...
- C#LeetCode刷题-字符串
字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) 15.3% 中 ...
- leetcode每日一题--雀巢原理;抽屉算法;Quorum机制;分布式应用
leetcode每日一题 539. 最小时间差 示例 1: 输入:timePoints = ["23:59","00:00"] 输出:1 示例 2: 输入:ti ...
- c++ leetcode 500-600
文章目录 重做题 501 ,502,507,508,509,516,517,519,523,524,525,526,528,530,531,538,539,540到563全部丢失,564 500. 键 ...
最新文章
- python能处理多大的数据-使用Python Pandas处理亿级数据
- jQuery常用的方法
- 【Linux】一步一步学Linux——ipcalc命令(191)
- DML和DDL含义和区别-一定要搞明白
- 截取含HTML标签的字符串
- php环境informix,在Nginx + php-fpm(fastcgi)环境下配置informix的连接
- python qt gui快速编程_《PYTHON QT GUI快速编程 PYQT编程指南》源码
- python中相对路径_Python中的绝对路劲和相对路径
- C#技术点--修改系统时间
- 5分钟教小白通过ipv6远程访问白群晖
- NPM安装依赖包,报错node-gyp rebuild...解决方法
- 【毕业设计】深度学习卫星遥感图像检测与识别 -opencv python 目标检测
- WiFi温湿度传感器开发
- Linux shell脚本中分号的作用
- ToolsOh第6批收录
- 关于经济寒冬找工作为什么这么难?
- 【Flask】response响应
- Unity 3D 一些对Scene窗口的调整以及摄像头的调整技巧
- 岗位竞聘报告PPT模板
- mysql连接字符串参数大全