Leetcode 128. 最長連續序列

  1. 最長連續序列
    給定一個未排序的整數數組 nums ,找出數字連續的最長序列(不要求序列元素在原數組中連續)的長度。
    請你設計并實現時間復雜度為 O(n) 的算法解決此問題。

示例 1:
輸入:nums = [100,4,200,1,3,2]
輸出:4
解釋:最長數字連續序列是 [1, 2, 3, 4]。它的長度為 4。

示例 2:
輸入:nums = [0,3,7,2,5,8,4,6,0,1]
輸出:9

提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109

對于數組中存在的連續序列,為了統計每個連續序列的長度,我們希望直接定位到每個連續序列的起點,從起點開始遍歷每個連續序列,從而獲得長度。

那么如何獲取到每個連續序列的起點呢,或者說什么樣的數才是一個連續序列的起點?
答案是這個數的前一個數不存在于數組中,因為我們需要能夠快速判斷當前數num的前一個數num - 1是否存在于數組中。

同時當我們定位到起點后,我們就要遍歷這個連續序列,什么時候是終點呢?
答案是當前數num的后一個數nunm + 1不存在于數組中,因此我們需要能夠快速判斷當前數num的后一個數num + 1是否存在于數組中。

為了實現上述需求,我們使用哈希表來記錄數組中的所有數,以實現對數值的快速查找。

python:

class Solution:def longestConsecutive(self, nums: List[int]) -> int:res = 0     # 記錄最長連續序列的長度num_set = set(nums)     # 記錄nums中的所有數值for num in num_set:# 如果當前的數是一個連續序列的起點,統計這個連續序列的長度if (num - 1) not in num_set:seq_len = 1     # 連續序列的長度,初始為1while (num + 1) in num_set:seq_len += 1num += 1    # 不斷查找連續序列,直到num的下一個數不存在于數組中res = max(res, seq_len)     # 更新最長連續序列長度return res

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

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

相關文章

ARM簡介

ARM&#xff1a;ARM是Advanced RISC Machine的縮寫&#xff0c;意為高級精簡指令集計算機。 英國ARM公司&#xff0c;2016年被軟銀創始人孫正義斥資320億美元收購了。現在是軟銀旗下的芯片設計公司&#xff0c;總部位于英國劍橋&#xff0c;專注于設計芯片&#xff0c;賣芯片生…

揭秘:頭部房企如何借助數據分析實現穩健發展?

房地產行業是我國國民經濟中的重要支柱產業之一&#xff0c;在房地產市場供求關系發生重大變化的當下&#xff0c;房企面臨多重挑戰。Kyligence 服務的這家頭部房企把發展的重點聚焦于內生&#xff0c;關注內生的轉化率、接管的效率以及內生毛利率的提升&#xff0c;引入 Kylig…

基于springboot實現保險信息網站系統項目【項目源碼+論文說明】計算機畢業設計

基于springboot實現保險信息網站系統演示 摘要 隨著互聯網的不斷發展&#xff0c;現在人們獲取最新資訊的主要途徑來源于網上新聞&#xff0c;當下的網上信息宣傳門戶網站的發展十分的迅速。而保險產品&#xff0c;作為當下人們非常關注的一款能夠給人們帶來醫療、生活、養老或…

面試筆記系列七之多線程+分布式系統基礎知識點整理及常見面試題

目錄 多線程 介紹一下線程的生命周期及狀態&#xff1f; 線程的sleep、wait、join、yield如何使用&#xff1f; sleep與yield方法的區別在于&#xff0c; 進程調度算法 創建線程有哪些方式&#xff1f; 什么是守護線程&#xff1f; ThreadLocal的原理是什么&#xff0c;…

當大語言模型遇到AI繪畫-google gemma與stable diffusion webui融合方法-礦卡40hx的AI一體機

你有想過建一臺主機&#xff0c;又能AI聊天又能AI繪畫&#xff0c;還可以直接把聊天內容直接畫出來的機器嗎&#xff1f; 當Google最新的大語言模型Gemma碰到stable diffusion webui會怎么樣&#xff1f; 首先我們安裝stable diffusion webui(automatic1111開源項目&#xff…

微信小程序構建npm失敗解決方式

安裝完所需要的依賴后&#xff0c;在微信開發者工具菜單欄中選擇&#xff1a;“工具” -> “構建 npm”&#xff0c;但是失敗。 解決方法&#xff1a;修改 project.config.json 開發者工具創建的項目&#xff0c;miniprogramRoot 默認為 miniprogram&#xff0c;package.js…

數據遷移DTS | 云上MySQL 數據庫遷移至達夢數據庫

引入 云上 MySQL 數據庫 —> 向達夢國產化數據庫遷移 下載&安裝 達夢客戶端工具 DM->可參考之前國產化專欄達夢文章 創建模式 在客戶端分別依次執行以下命令腳本&#xff08;這里沒有通過客戶端管理工具去創建達夢數據庫的模式&#xff0c;當然也可以通過圖形化界…

WordPress通過寶塔面板的入門安裝教程【保姆級】

WordPress安裝教程【保姆級】【寶塔面板】 前言一&#xff1a;安裝環境二&#xff1a;提前準備三&#xff1a;域名解析四&#xff1a;開始安裝五&#xff1a;安裝成功 前言 此教程適合新手&#xff0c;即使不懂代碼&#xff0c;也可輕松安裝wordpress 一&#xff1a;安裝環…

node如何解析前端傳遞過來的命令行字符串

node如何解析前端傳遞過來的命令行字符串 在Node.js中&#xff0c;如果你想處理從前端傳遞過來的命令行字符串&#xff0c;你可以根據你的應用程序的架構來決定如何接收這些字符串&#xff0c;然后進行解析。一般來說&#xff0c;命令行字符串可能會通過HTTP請求&#xff08;如…

視頻在線轉換,四種方法任你選!(建議收藏)

在當今的數字時代&#xff0c;視頻已經成為人們日常生活中不可或缺的一部分。我們通過視頻分享知識、表達創造力、觀看娛樂節目&#xff0c;甚至參與遠程學習和工作。然而&#xff0c;隨著視頻格式的多樣化和設備的激增&#xff0c;我們經常會遇到一個常見的問題&#xff1a;視…

Linux(CentOS)學習

一、認識Linux 1、如何修改Linux時區 2、配置固定IP 3、重啟網絡服務 3、小技巧快捷鍵 4、環境變量設置 5、Linux文件的上傳和下載 6、壓縮和解壓 二、基礎命令 1、目錄命令 (1、)查看目錄內容&#xff08;ls&#xff09; 1、ls //查看當前目錄內容 2、- a //顯示隱藏內容 3…

深入理解Lucene:開源全文搜索引擎的核心技術解析

1. 介紹 Lucene是什么&#xff1f; Lucene是一個開源的全文搜索引擎庫&#xff0c;提供了強大的文本搜索和檢索功能。它由Apache軟件基金會維護和開發&#xff0c;采用Java語言編寫&#xff0c;因其高性能、可擴展性和靈活性而備受歡迎。 Lucene的作用和應用場景 Lucene主要…

Linux下創建用戶并且賦root權限

背景&#xff1a;好幾次都要求自己在服務器上創建用戶&#xff0c;并且賦權限給這個用戶的root權限&#xff0c;因為生產服務器上不讓用root用戶操作&#xff0c;之前沒怎么記錄&#xff0c;因為這個操作不多&#xff0c;但是又記不住這個操作&#xff0c;一到用上&#xff0c;…

【算法】二叉搜索樹的插入、刪除、轉換操作

1 二叉搜索樹的插入操作 給定二叉搜索樹&#xff08;BST&#xff09;的根節點 root 和要插入樹中的值 value &#xff0c;將值插入二叉搜索樹。 返回插入后二叉搜索樹的根節點。 輸入數據 保證 &#xff0c;新值和原始二叉搜索樹中的任意節點值都不同。 注意&#xff0c;可能…

小程序原生 API

微信原生 API 1. API 基礎 小程序開發框架提供豐富的微信原生 API&#xff0c;可以方便的調起微信提供的能力&#xff0c;如獲取用戶信息&#xff0c;本地存儲&#xff0c;支付功能等&#xff0c;幾乎所有小程序的 API 都掛載在 wx 對象底下&#xff0c;例如&#xff1a;wx.c…

#LLM入門|Prompt#2.2_ AI 應用開發的范式_Language_Models,the_Chat_Format_and_Tokens

在本章中&#xff0c;我們將和您分享大型語言模型&#xff08;LLM&#xff09;的工作原理、訓練方式以及分詞器&#xff08;tokenizer&#xff09;等細節對 LLM 輸出的影響。 我們還將介紹 LLM 的提問范式&#xff08;chat format&#xff09;&#xff0c;這是一種指定系統消息…

STM32合并燒錄IAP+APP

STM32合并燒錄IAPAPP 通過查找相關資料 有以下幾種合并方法 第一種直接將二進制文件用記事本合并 而要合并的就是就將IAP最后的一行刪除&#xff0c;然后將APP程序追加在后面。 &#xff08;修改前&#xff09; 把APP的.hex 全部內容拷貝復制到 剛才刪掉結束語句的 IAP的.…

Win32匯編ListView控件學習

此控件比較復雜&#xff1b;和基礎win32控件不同&#xff1b;需要先初始化Windows公共控件庫&#xff0c; invoke InitCommonControls 之后才可使用&#xff1b; lvdemo.asm&#xff0c; .386.model flat, stdcalloption casemap :none ; case sensitiveinclude window…

【OCR識別】使用OCR技術還原加密字體文字

文章目錄 1. 寫在前面2. 頁面分析3. 字符知識4. 加密分析 【作者主頁】&#xff1a;吳秋霖 【作者介紹】&#xff1a;Python領域優質創作者、阿里云博客專家、華為云享專家。長期致力于Python與爬蟲領域研究與開發工作&#xff01; 【作者推薦】&#xff1a;對JS逆向感興趣的朋…

減少頁面加載時間:提升用戶體驗的關鍵

?? 祝屏幕前的您天天開心&#xff0c;每天都有好運相伴。我們一起加油&#xff01;?? &#x1f388;&#x1f388;作者主頁&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 目錄 引言 一、為什么頁面加載時間重要&#xff1f; 二、如何減少頁面加載時間&#xff1f; …