排序題目:最小時間差

文章目錄

  • 題目
    • 標題和出處
    • 難度
    • 題目描述
      • 要求
      • 示例
      • 數據范圍
  • 解法
    • 思路和算法
    • 代碼
    • 復雜度分析

題目

標題和出處

標題:最小時間差

出處: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…