哈希:最長連續序列

題目描述:無序的整型數組,求連續最長序列。

輸入:nums = [100,4,200,1,3,2]

輸出:4? ?(因為:最長數字連續序列是 [1, 2, 3, 4],長度為 4。)

說明:連續指的是數字的連續,算法要求時間復雜度為O(n)。


求解思路:遍歷數組,依次往下找。在找的過程中,因為求最長,所以找的時候需要確定當前數是序列最小,否則沒必要。用Set容器存儲所有數作為輔助,方便確定我們找的連續序列中的數是否存在。(因為求解的最長序列,不要求在數組連續,所以想到用set去重也不會影響結果。)

class Solution {public int longestConsecutive(int[] nums) {int longest = 0;// 把所有數存在set中,方便查找HashSet<Integer> set = new HashSet<>();for (int num : nums) {set.add(num);}// 遍歷,尋找最長連續序列for (int i = 0; i < nums.length; i++) {int curNum = nums[i];//判斷前驅存不存在很重要!確保序列是從最小的curNum開始if (!set.contains(curNum - 1)) {// curNum是序列的開頭,len為1int len = 1;// 尋找curNum的下個數。前置++,++curNum和curNum+1效果一樣,但是++或者--一般用在遍歷,curNum+1更方便理解while (set.contains(curNum + 1)) {len += 1;curNum += 1;}longest = Math.max(longest, len);}}return longest;}
}

以上代碼,會報超時。

再次優化,遍歷set代替遍歷nums。

class Solution {public int longestConsecutive(int[] nums) {int longest = 0;// 把所有數存在set中,方便查找HashSet<Integer> set = new HashSet<>();for (int num : nums) {set.add(num);}// 遍歷set,因為set中比原數組數少,不存在重復的for (Integer num : set) {// 之所以這里需要使用curNum把num記錄下來,因為num是for循環進行的條件。和for(i...len)不同int curNum = num;if (!set.contains(curNum - 1)) {int len = 1;while (set.contains(curNum + 1)) {len += 1;curNum += 1;}longest = Math.max(longest, len);}}return longest;}
}

總結:判斷cur-1是核心,確保序列開頭最小。遍歷set是其二,省去重復的計算。

聯系地址:128. 最長連續序列 - 力扣(LeetCode)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/94017.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/94017.shtml
英文地址,請注明出處:http://en.pswp.cn/web/94017.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python中的生成器

概要python中的生成器是一種特殊的迭代器&#xff0c;如果按照c語言的說法&#xff0c;就是一種特殊的指針&#xff0c;但是python語言的一個語言特性是兼容了函數化編程&#xff0c;類似lambda匿名函數機制。本文重點介紹生成器表達式的使用&#xff0c;是一種很快捷&#xff…

【Coze】Windows 環境下使用 Docker 部署 Coze Studio 的詳細指南

一、前言&#xff1a; Coze Studio 是一站式 AI Agent 開發工具。提供各類最新大模型和工具、多種開發模式和框架&#xff0c;從開發到部署&#xff0c;為你提供最便捷的 AI Agent 開發環境。 提供 AI Agent 開發所需的全部核心技術&#xff1a;Prompt、RAG、Plugin、Workflo…

票務系統小程序源碼

1. 系統概述 github地址 本系統是一個歷經多年迭代和市場檢驗的綜合性智慧票務解決方案。它以小程序和后臺管理系統為核心&#xff0c;深度整合了線上OTA渠道、線下多種支付方式以及各類智能硬件&#xff0c;為旅游景區、展館、活動中心等場景提供穩定、高效、功能完備的一體化…

Python 文件操作與異常處理全解析

目錄 一、文件的基本概念 1. 什么是文件 2. 文件操作的核心內容 3. 文件操作的作用 二、文件的基本操作 1. 文件操作三步走 2. 打開文件&#xff1a;open () 函數 2.1 文件路徑 2.2 常用 mode 模式 3. 寫入文件&#xff1a;write () 函數 4. 關閉文件&#xff1a;cl…

領碼方案:通用物聯網數據采集低代碼集成平臺——萬物智聯時代的黃金鑰匙

摘要&#xff1a; 領碼方案通過“協議抽象層低代碼引擎AI智能中樞”架構&#xff0c;實現物聯網設備數據采集、存儲、分析的零代碼配置化集成。支持200工業協議即插即用&#xff0c;10分鐘完成設備上云&#xff0c;數據流轉效率提升70%&#xff0c;AI模型調用耗時降低90%。該方…

后臺管理系統-10-vue3之用戶管理組件配置子路由和靜態頁面

文章目錄 1 配置子路由 1.1 router/index.js(添加路由) 1.2 views/User.vue(用戶管理) 1.3 驗證路由是否生效 2 User.vue(靜態頁面) 2.1 搜索框和表格的靜態搭建 2.2 用戶表格的數據獲取渲染 2.2.1 user.js(準備數據) 2.2.2 mock.js(攔截請求的URL) 2.2.3 api.js(axios請求的UR…

AMPAK正基科技系列產品有哪些廣泛應用于IOT物聯網

關於正基AMPAK 智慧物聯網 無線射頻模組專家 專業品牌 正基科技是一家擁有超過 20 年無線模組研發、設計、生產、行銷與產品技術整合服務經驗的公司。 有專業的高頻模組硬體設計及軟體整合工程師團隊&#xff0c;具備豐富的客戶應用經驗&#xff0c;能因應客戶與市場導向的產品…

【PyTorch】環境配置

文章目錄1. 配置cuda環境2. 配置conda環境3. 配置pytorch gpu環境1. 配置cuda環境 在命令行輸入以下命令可以查看當前顯卡驅動版本和最高支持的cuda版本 nvidia-smi根據cuda版本去官網下載并安裝cuda 下載鏈接&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive…

vue3實現實現手機/PC端錄音:recorder-core

通過 recorder-core 這個插件實現錄音recorder-core插件使用下方的js文件是安裝后封裝的一個js文件&#xff0c;在需要使用的地方直接引入這個文件&#xff1a;import record from “./recorderCore.js”;// 文件名稱&#xff1a;recorderCore.js// recorder-core插件使用方式…

deepseek 本地部署,如何支持工具調用

這里需要考慮顯卡是否和模型匹配&#xff0c;支不支持推理 先把模版拉取到本地&#xff1a;git clone https://github.com/sgl-project/sglang.git 我的位置是 /data/home/sglang 注意模版位于sglang下的examples/chat_template中 根據對應的模版部署模型&#xff0c;比如 …

Excel中運行VB的函數

“插入” -》 “模塊”Function FormatCodeFlex(inputStr As String, Optional defaultVal As String "0") As StringOn Error GoTo ErrorHandlerDim parts() As StringDim i As Integer 使用 "-" 分割字符串parts Split(inputStr, "-") 確保至…

《零基礎入門AI:深度學習之NLP基礎學習》

一、自然語言處理&#xff08;NLP&#xff09;概述 1. 基本概念 ? 自然語言處理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能與計算語言學交叉的核心領域&#xff0c;致力于實現計算機對人類自然語言的自動理解、分析、生成與交互。其研究目標在于構…

保姆級Debezium抽取SQL Server同步kafka

前言&#xff1a; Debezium SQL Server連接器捕獲SQL Server數據庫模式中發生的行級更改。 官方2.0文檔&#xff1a; Debezium connector for SQL Server :: Debezium Documentation 有關與此連接器兼容的SQL Server版本的信息&#xff0c;請參閱 SQL Server Database: 201…

鴻蒙安卓前端中加載丟幀:ArkWeb分析

序章&#xff1a;卡頓的數字世界 在每秒60幀的視覺交響樂中&#xff0c;每一幀都是精心編排的節拍。當這些節拍開始丟失——就像交響樂中突然靜音的提琴部——我們便遭遇了加載丟幀的數字噩夢。這不是簡單的性能下降&#xff0c;而是一場渲染管線的全面崩潰&#xff0c;是數字…

Spring Cloud Netflix學習筆記06-Zuul

文章目錄概述什么是Zuul?Zuul 能干嘛&#xff1f;Zuul入門案例pom依賴application.yml啟動類隱藏真實路徑概述 什么是Zuul? Zuul包含了對請求的路由(用來跳轉的)和過濾兩個最主要功能&#xff1a; 其中路由功能負責將外部請求轉發到具體的微服務實例上&#xff0c;是實現外…

c# 和 c++ 怎樣結合

c# 和 c 怎樣結合在軟件開發中&#xff0c;C# 和 C 通常用于不同的場景和目的&#xff0c;但有時需要將它們結合使用以充分利用兩種語言的優點。以下是幾種常見的方法來實現 C# 和 C 的結合&#xff1a;1. P/Invoke&#xff08;Platform Invocation Services&#xff09;P/Invo…

開源分布式數據庫(Dgraph)

Dgraph 是一款專為處理復雜關系數據設計的開源分布式圖數據庫&#xff0c;核心目標是提供高性能、高可擴展性的圖數據存儲與查詢能力。其設計融合了原生圖模型與分布式架構&#xff0c;支持 GraphQL 查詢語言&#xff0c;適用于社交網絡、知識圖譜、推薦系統等場景。 一、技術架…

Apache ShenYu和Nacos之間的通信原理

這是一個非常經典的服務注冊發現和動態配置管理的案例。ShenYu 作為網關,需要實時感知后端微服務的上線、下線以及其元數據信息(如 API 接口列表)的變化,同時它自身的配置也可能需要動態調整。Nacos 則作為注冊中心和配置中心,扮演了“服務電話簿”和“動態配置倉庫”的角…

強制重啟導致Ubuntu24.04LTS amd的WIFI無法使用的解決方案

強制重啟導致Ubuntu24.04LTS amd的WIFI無法使用的解決方案 前言 ? 我按下了<ctrl><alt><prtsc>組合鍵&#xff0c;然后按住<ctrl><alt>不放&#xff0c;讓我的死機的圖形化的Ubuntu強制重啟&#xff0c;然后再次打開發現&#xff0c;我的ubu…

Java基礎面試題02

引用&#xff1a;&#xff08;代碼隨想錄的八股轉免費了&#xff09;以下為網址 卡碼筆記 本文為學習以上文章的筆記&#xff0c;如果有時間推薦直接去原網址 Java中的數據類型有哪些&#xff1f;分為哪兩大類&#xff1f; (考點&#xff1a;Java數據類型及其分類) 【簡單】 基…