最長連續序列【中等】

leetcode鏈接
給定一個未排序的整數數組 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 <= 10^5
-10^9 <= nums[i] <= 10^9
thought: 這題可先排序,然后采用雙指針法。其中,兩個相同的值跳過來實現正確的計數。【應當采用linkedHashSet特點來去重,更好使用,就不用對重復的進行跳過】

‘’’ java

class Solution {public int longestConsecutive(int[] nums) {Arrays.sort(nums);if (nums.length <=0) return 0;int len = 1,max = 1;for (int i = 0,j=i+1;j<nums.length;){if (nums[i]+1 == nums[j]){len++;}else if (nums[i] == nums[j]){i++;j++;continue;}else {len = 1;}i++;j++;max = max<len?len:max;}return max;}
}

上述方法,由于Array.sort的時間復雜度是nlogn。因此看了其他方法,采用set去重,然后利用連續的特性去獲取長度。如下:

class Solution {public int longestConsecutive(int[] nums) {int res = 0;    // 記錄最長連續序列的長度Set<Integer> numSet = new HashSet<>();  // 記錄所有的數值for(int num: nums){numSet.add(num);    // 將數組中的值加入哈希表中}int seqLen;     // 連續序列的長度for(int num: numSet){// 如果當前的數是一個連續序列的起點,統計這個連續序列的長度if(!numSet.contains(num - 1)){seqLen = 1;while(numSet.contains(++num))seqLen++;  // 不斷查找連續序列,直到num的下一個數不存在于數組中res = Math.max(res, seqLen);    // 更新最長連續序列長度}}return res;}
}作者:畫圖小匠
鏈接:https://leetcode.cn/problems/longest-consecutive-sequence/solutions/2362995/javapython3cha-xi-biao-ding-wei-mei-ge-l-xk4c/
來源:力扣(LeetCode)

‘’’ python
使用set,然后利用連續特性去計算長度。

class Solution:def longestConsecutive(self, nums: List[int]) -> int:num_set = set(nums)res = 0for num in num_set:if (num-1) not in num_set:seq_len = 1while (num+1) in num_set:seq_len += 1num += 1res = max(res,seq_len)return res

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

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

相關文章

『new Date 在 IOS 失效 の bug』

問題&#xff1a;new Date()在安卓下正常&#xff0c;在IOS下顯示不出來。 原因&#xff1a;在IOS下&#xff0c;new Date(“2000-2-22 00:10”),返回的是undefined&#xff0c;因為IOS不支持這種類型格式。 解決&#xff1a;更換下格式&#xff1a;new Date(“2000/2/22”) …

類初始化,類加載,類加載器

類初始化&#xff0c;類加載&#xff0c;類加載器 1. 類加載1.1. 類的加載1.2. 類的鏈接1.2.1. 驗證1.2.2. 準備1.2.3. 解析 2. 類加載器2.1. 類加載器分為四種&#xff1a;前三種為虛擬機自帶的加載器。2.2. 類加載有三種方式&#xff1a;2.3. **JVM類加載機制**2.4. 雙親委派…

GeoTrust通配符證書:保護您的網站安全

GeoTrust通配符 SSL證書是一種特殊的 SSL 證書類型&#xff0c;它可以同時為您的主域名及其所有子域提供安全保護。無論您有多少個不同的子域需要保障&#xff0c;都可以通過單一的 GeoTrust 通配符 SSL 證書輕松實現&#xff0c;極大地簡化了管理流程并降低了成本。 此外&…

1688商品詳情數據接口(1688.item_get)

1688商品詳情數據接口是一種程序化的接口&#xff0c;通過這個接口&#xff0c;商家或開發者可以使用自己的編程技能&#xff0c;對1688平臺上的商品信息進行查詢、獲取和更新。這個接口允許商家根據自身的需求&#xff0c;獲取商品的詳細信息&#xff0c;例如價格、庫存、描述…

JUC(Java Util Concurrent)多線程并發庫

JUC&#xff08;Java Util Concurrent&#xff09;是Java中用于編寫多線程并發程序的庫。開發過程中使用JUC主要有以下幾個好處&#xff1a; 1. 提高程序性能&#xff1a;使用JUC可以實現多線程并發執行&#xff0c;充分利用多核CPU&#xff0c;提高程序的性能。 2. 簡化代碼…

群暉NAS搭建WebDav服務做文件共享,可隨時隨地遠程訪問

文章目錄 1. 在群暉套件中心安裝WebDav Server套件1.1 安裝完成后&#xff0c;啟動webdav服務&#xff0c;并勾選HTTP復選框 2. 局域網測試WebDav服務2.1 下載RaiDrive客戶端2.2 打開RaiDrive&#xff0c;設置界面語言可以選擇中文2.3 點擊添加按鈕&#xff0c;新建虛擬驅動區2…

從事軟件測試8年,對業務測試人員的一些思考

自從事測試工作八年多以來&#xff0c;經歷過三個部門多條業務線&#xff0c;也經歷過測試轉型再回到測試&#xff0c;在此過程中對測試工作和角色的認知也逐步有些思考&#xff0c;想把這些思考分享給大家&#xff0c;希望為業務測試同學提供一些有價值的思路。 同時&#xff…

YOLOV7主干改進,使用fasternet輕量化改進主干(完整教程)

1&#xff0c;Pconv&#xff08;來自Fasternet&#xff09;&#xff08;可作為模型中的基礎卷積模塊使用&#xff09; 論文鏈接&#xff1a;https://arxiv.org/abs/2303.03667 2&#xff0c;為了大家方便的使用&#xff0c;這里我對原本的PConv的代碼做了部分的改動&#xff0…

立哥尖端技術-云安全整合方案

云安全管理中心 安全管理中心具有集中管控云環境整體安全態勢的功能&#xff0c;具備以下功能&#xff1a; &#xff08;1&#xff09;部署方式&#xff1a;與云平臺緊耦合&#xff0c;可實現云平臺一鍵下單&#xff0c;自動交付。 &#xff08;2&#xff09;安全態勢總覽&a…

拿下掙值管理,軟考集成你就成功了一半!

在備考軟考集成的時候&#xff0c;掙值管理有多重要呢&#xff1f;掙值管理的計算題考的頻率非常高&#xff0c;基本上每年都會考。 而且&#xff0c;計算題基本上都是20分左右&#xff0c;只要能在這道計算題上得滿分&#xff0c;那么45分及格的考試就已經成功了一半。 今天…

豪華程度堪比飛機頭等艙?奔馳在北美發布Tourrider系列巴士

今年三月&#xff0c;奔馳工廠附近出現了一臺特殊的測試車。其突出的前保險杠以及豎置雙風擋等特殊配置&#xff0c;都在暗示著它并非是為歐洲市場打造。 根據特征推測&#xff0c;這臺車應該是為北美市場打造。 就在昨天&#xff0c;奔馳發布了旗下全新Tourrider系列豪華客車&…

python數據分析高效代碼合集

文章目錄 問題:我有5個dataframe,都包含time 列,如何將它們根據time列取交集,并保存到同一個excel的不同sheet頁中。**df1,df2, df3, df4, df5,其也要用取交集后的time列**問題:我有5個dataframe,都包含time 列,如何將它們根據time列取交集,并保存到同一個excel的不同…

npm安裝 node-sass

第一步&#xff1a;安裝node-gyp 1.: npm install node-gyp -g2.: node-gyp install3.: npm install node-sass

QML24、常規組件StackView

1.簡介與示例 StackView管理著view頁面的生命周期,提供了頁面的棧式導航。這些view頁面可能有業務需要,根據業務需要,可以一級一級向深處跳轉,根據當前view的狀態與設定的情況,可能產生一個新view或者返回之前view 比如:注冊賬號分步驟,輸入用戶名,密碼,點擊下…

嵌入式單片機方向和Linux驅動開發方向哪個發展前景好?

嵌入式單片機方向和Linux驅動開發方向哪個發展前景好&#xff1f; 在某些平臺上看到很多人鼓吹嵌入式Linux開發比單片機開發要好&#xff0c;讓所有人都去做嵌入式Linux開發。說這種話的人大多數是嵌入式Linux的培訓機構&#xff0c;或者是一開始就以嵌入式Linux入門的那一批人…

小型養豬場污水處理技術方案

諸城市鑫淼環保小編帶大家了解一下小型養豬場污水處理技術方案 1.初步處理&#xff1a; 豬舍設立固液分離裝置&#xff1a;這可以幫助將固體糞便與液體污水分開&#xff0c;減少進一步處理的難度和成本。 設置沉淀池&#xff1a;讓分離后的污水在沉淀池內停留&#xff0c;使部分…

Windows更換主板后一直提示,你的pin碼不可再用解決辦法

最近惠普電腦主板壞了&#xff0c;到售后去維修電腦更換了個主板。 在經過了一系列的重新開機后&#xff0c;就直接卡在了“你的pin碼不可再用”那里。 主要癥狀就是&#xff0c;一直點一直連不上windows的 microsoft賬戶&#xff0c;點完一會兒黑屏。然后就回到了一開頭的“你…

飛書如何接入ChatGPT-打造個人智能問答助手實現無障礙交流

目錄 前言 環境列表 1.飛書設置 2.克隆feishu-chatgpt項目 3.配置config.yaml文件 4.運行feishu-chatgpt項目 5.安裝cpolar內網穿透 6.固定公網地址 7.機器人權限配置 8.創建版本 9.創建測試企業 10. 機器人測試 總結 前言 在飛書中創建chatGPT機器人并且對話&am…

python連接數據庫的方式

python連接數據庫的方式 pyzenith.connect&#xff08;&#xff09;函數就是連接數據庫&#xff1b; exception.ScriptException&#xff08;&#xff09;這一句是自定義異常&#xff0c;可以不用我這個&#xff1b; finally里面還有一個try finally是有必要的&#xff0c;防止…

抖音汽車租賃小程序技術指南:開發高效便捷的租賃系統

為了更好地滿足用戶需求&#xff0c;抖音汽車租賃小程序成為一個備受關注的技術解決方案。本文將深入探討開發高效便捷的汽車租賃系統所需的技術要點&#xff0c;為開發者提供一份實用的技術指南。 小程序架構選擇 在搭建抖音汽車租賃小程序時&#xff0c;選擇合適的小程序架構…