文章目录

  • 题目
    • 标题和出处
    • 难度
    • 题目描述
      • 要求
      • 示例
      • 数据范围
  • 解法
    • 思路和算法
    • 代码
    • 复杂度分析

题目

标题和出处

标题:最小时间差

出处:539. 最小时间差

难度

3 级

题目描述

要求

给定一个 24 \texttt{24} 24 小时制的时间列表,时间以 "HH:MM" \texttt{"HH:MM"} "HH:MM" 的形式表示,返回列表中任意两个时间的最小时间差的分钟数表示。

示例

示例 1:

输入: timePoints = ["23:59","00:00"] \texttt{timePoints = ["23:59","00:00"]} timePoints = ["23:59","00:00"]
输出: 1 \texttt{1} 1

示例 2:

输入: timePoints = ["00:00","23:59","00:00"] \texttt{timePoints = ["00:00","23:59","00:00"]} timePoints = ["00:00","23:59","00:00"]
输出: 0 \texttt{0} 0

数据范围

  • 2 ≤ timePoints.length ≤ 2 × 10 4 \texttt{2} \le \texttt{timePoints.length} \le \texttt{2} \times \texttt{10}^\texttt{4} 2timePoints.length2×104
  • timePoints[i] \texttt{timePoints[i]} timePoints[i] 格式为 "HH:MM" \texttt{"HH:MM"} "HH:MM"

解法

思路和算法

首先将时间列表中的每个时间都转换成分钟数表示,得到分钟数组,则分钟数组的每个元素都在范围 [ 0 , 1439 ] [0, 1439] [0,1439] 内。

将分钟数组排序之后,最小时间差一定是数组中的两个相邻时间之差,或者数组的首元素与末元素之差加上 1440 1440 1440(一天的分钟数是 1440 1440 1440)。遍历排序后的分钟数组中的每一对相邻元素(包括首元素与末元素)计算时间差,即可得到最小时间差。

代码

class Solution {public int findMinDifference(List<String> timePoints) {int length = timePoints.size();int[] timeArr = new int[length];for (int i = 0; i < length; i++) {String timePoint = timePoints.get(i);int hour = Integer.parseInt(timePoint.substring(0, 2));int minute = Integer.parseInt(timePoint.substring(3));timeArr[i] = hour * 60 + minute;}Arrays.sort(timeArr);int minDifference = timeArr[0] - timeArr[length - 1] + 1440;for (int i = 1; i < length; i++) {int difference = timeArr[i] - timeArr[i - 1];minDifference = Math.min(minDifference, difference);}return minDifference;}
}

复杂度分析

  • 时间复杂度: O ( n log ⁡ n ) O(n \log n) O(nlogn),其中 n n n 是时间列表 timePoints \textit{timePoints} timePoints 的长度。需要创建长度为 n n n 的分钟数组并排序,排序需要 O ( n log ⁡ n ) O(n \log n) O(nlogn) 的时间,排序后遍历数组需要 O ( n ) O(n) O(n) 的时间,因此时间复杂度是 O ( n log ⁡ n ) O(n \log n) O(nlogn)

  • 空间复杂度: O ( n ) O(n) O(n),其中 n n n 是时间列表 timePoints \textit{timePoints} timePoints 的长度。需要创建长度为 n n n 的分钟数组并排序,数组需要 O ( n ) O(n) O(n) 的空间,排序需要 O ( log ⁡ n ) O(\log n) O(logn) 的递归调用栈空间,因此空间复杂度是 O ( n ) O(n) O(n)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/44162.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/44162.shtml
英文地址,请注明出处:http://en.pswp.cn/web/44162.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

暗黑魅力:Xcode全面拥抱应用暗黑模式开发指南

暗黑魅力&#xff1a;Xcode全面拥抱应用暗黑模式开发指南 随着苹果在iOS 13和iPadOS 13中引入暗黑模式&#xff0c;用户可以根据自己的喜好或环境光线选择不同的界面主题。作为开发者&#xff0c;支持暗黑模式不仅能提升用户体验&#xff0c;还能彰显应用的专业性。Xcode提供了…

《梦醒蝶飞:释放Excel函数与公式的力量》11.4 ISERROR函数

第11章&#xff1a;信息函数 第四节 11.4 ISERROR函数 11.4.1 简介 ISERROR函数是Excel中的一个信息函数&#xff0c;用于检查指定单元格或表达式是否产生错误。如果单元格或表达式产生任何类型的错误&#xff08;如N/A、VALUE!、REF!等&#xff09;&#xff0c;则返回TRUE&…

全开源TikTok跨境商城源码/TikTok内嵌商城+搭建教程/前端uniapp+后端

多语言跨境电商外贸商城 TikTok内嵌商城&#xff0c;商家入驻一键铺货一键提货 全开源完美运营 海外版抖音TikTok商城系统源码&#xff0c;TikToK内嵌商城&#xff0c;跨境商城系统源码 接在tiktok里面的商城。tiktok内嵌&#xff0c;也可单独分开出来当独立站运营 二十一种…

FPGA原型验证(八):如何选择现成的原型验证平台?

第6章 如何选择现成的原型验证平台? 在第5章中,我们探讨了为基于FPGA的原型项目创建FPGA硬件平台时应考虑的详细因素。 现在,我们将考虑所谓的“自制还是购买”争论的另一方面。什么时候使用现成的FPGA板或甚至是更复杂的基于FPGA的系统,而不是设计定制板更有意义? 什么…

leetcode165.解密数字

题目表述&#xff1a; 这道题目和斐波那契数列以及跳台阶问题十分相似。 斐波那契数列&#xff1a;0、1、1、2、3、5, 8、13、21、34 …… leetcode跳台阶问题&#xff1a;1、1、2、3、5, 8、13、21、34....... 这类题目的特点都是第N项的结果等于前两项的和。 但是解密数…

java 在pdf中根据关键字位置插入图片(公章、签名等)

java 在pdf中根据关键字位置插入图片&#xff08;公章、签名等&#xff09; 1.使用依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.1.12</version><type>pom</type>…

【深度学习】图形模型基础(7):机器学习优化中的方差减少方法(1)

摘要 随机优化是机器学习中至关重要的组成部分&#xff0c;其核心是随机梯度下降算法&#xff08;SGD&#xff09;&#xff0c;这种方法自60多年前首次提出以来一直被广泛使用。近八年来&#xff0c;我们见证了一个激动人心的新进展&#xff1a;随机优化方法的方差降低技术。这…

车载测试资料学习和CANoe工具实操车载项目(每日直播)

每日直播时间&#xff1a;&#xff08;直播方式&#xff1a;腾讯会议&#xff09; 周一到周五&#xff1a;20&#xff1a;00-23&#xff1a;00 周六与周日&#xff1a;9&#xff1a;00-17&#xff1a;00 向进腾讯会议学习的&#xff0c;可以关注我并后台留言 直播内容&#xff…

Simscape物理建模步骤

为了介绍构建和仿真物理模型的步骤&#xff0c;这里以simulink自带示例模型Mass-Spring-Damper with Controller为例&#xff0c;下图为建立好的模型。 详细物理建模和仿真分析步骤如下&#xff1a; 步骤 1&#xff1a;使用 ssc_new 创建新模型 使用 ssc_new 是开始构建 Sims…

李彦宏所说的卷应用到底是什么?

李彦宏在2024世界人工智能大会上的发言强调了一个重要的观点&#xff0c;那就是在AI时代&#xff0c;技术的应用比技术本身更为关键。他所提出的“卷应用”而非“卷模型”&#xff0c;实际上是在呼吁业界关注AI技术的实际落地和价值创造&#xff0c;而不是单纯地在模型精度或规…

【 RESTful API 】

RESTful API 是一种用于构建 web 应用程序的设计风格和架构模式。它提供了通过 HTTP 协议访问和操作资源的规范方式。 REST&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;它强调在网络中以资源的形式进行数据传输和状态管理。RESTfu…

Memcached与Redis:缓存解决方案的较量与选择

标题&#xff1a;Memcached与Redis&#xff1a;缓存解决方案的较量与选择 在现代应用架构中&#xff0c;缓存是提升性能的关键技术之一。Memcached和Redis作为两款流行的开源缓存解决方案&#xff0c;它们各自有着独特的特点和使用场景。本文将深入比较Memcached和Redis的特性…

案例|LabVIEW连接S7-1200PLC

附带&#xff1a; 写了好的参考文章&#xff1a; 通讯测试工具和博图仿真机的连接教程【内含图文完整过程软件使用】 解决博图V15 V16 V17 V18等高版本和低版本在同款PLC上不兼容的问题 目录 前言一、准备条件二、步骤1. HslCommunicationDemo问题1&#xff1a;连接失败?问题…

Lingo学习(二)——线性规划基础、矩阵工厂

一、线性规划基础 &#xff08;一&#xff09;方法 ① 一个线性规划中只含一个目标函数。(两个以上是多目标线性规划,Lingo无法直接解) ② 求目标函数的最大值或最小值分别用max …或min …来表示。 ③ 以!开头,以;结束的语句是注释语句; ④ 线性规划和非线性规划的本质…

Android11 MTK 状态栏添加无Sim卡图标

1、近日&#xff0c;查看测试提出的bug时&#xff0c;发现了一个问题&#xff0c;设备在未安装sim卡时&#xff0c;状态栏中不显示无sim卡的图标。 2、解决 路径&#xff1a;****\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarSign…

01、Kerberos安全认证之原理及搭建命令使用学习笔记

文章目录 前言一、Kerberos原理1.1、数据安全防护&#xff08;kerberos所属的层次&#xff09;1.2、Kerberos介绍1.3、Kerberos名词介绍1.4、Kerberos术语1.5、Kerberos认证流程1.5.1、Kerberos流程图1.5.2、第一次通信&#xff1a;客户端与AS1.5.3、第二次通信&#xff1a;客户…

cpp使用第三方库

使用第三方库在C中进行编程是一种常见的做法&#xff0c;因为它可以让利用现成的代码来实现更复杂的功能&#xff0c;而不必从头开始编写。下面是一个示例&#xff0c;演示如何在C项目中引入并使用一个第三方库。这个例子将使用Boost库&#xff0c;它是C中广泛使用的一个库&…

60、基于浅层神经网络的数据拟合(matlab)

1、基于浅层神经网络的数据拟合的简介、原理以及matlab实现 1&#xff09;内容说明 基于浅层神经网络的数据拟合是一种常见的机器学习方法&#xff0c;用于通过输入数据来拟合一个非线性函数。这种方法通常包括一个输入层、一个或多个隐藏层和一个输出层。神经网络通过学习权…

广电日志分析系统

需求 广电集团中有若干个系统都产生日志信息&#xff0c;目前大约分布与70到80台服务器中&#xff0c;分别是windows与Linux操作系统。需要将服务器上产生的日志文件利用我们的技术进行解析 设计 每个日志工作站负责30-50个服务器的日志解析工作。可以根据实际需求进行设置&…

ENSP实现防火墙区域策略与用户管理

目录 实验拓扑与要求​编辑 交换机与防火墙接口的配置 交换机&#xff1a; 创建vlan 接口配置 防火墙配置及接口配置 防火墙IP地址配置 云配置​编辑​编辑​编辑 在浏览器上使用https协议登陆防火墙&#xff0c;并操作 访问网址&#xff1a;https://192.168.100.1:844…