【LeetCode每日一題】——128.最長連續序列

文章目錄

  • 一【題目類別】
  • 二【題目難度】
  • 三【題目編號】
  • 四【題目描述】
  • 五【題目示例】
  • 六【題目提示】
  • 七【解題思路】
  • 八【時間頻度】
  • 九【代碼實現】
  • 十【提交結果】

一【題目類別】

  • 哈希表

二【題目難度】

  • 中等

三【題目編號】

  • 128.最長連續序列

四【題目描述】

  • 給定一個未排序的整數數組 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 < = n u m s . l e n g t h < = 1 0 5 0 <= nums.length <= 10^5 0<=nums.length<=105
  • ? 1 0 9 < = n u m s [ i ] < = 1 0 9 -10^9 <= nums[i] <= 10^9 ?109<=nums[i]<=109

七【解題思路】

  • 利用哈希表的思想
  • 首先將數組中的元素加入哈希表中,這么做的目的是去重,并且為了方便后續的計算
  • 然后遍歷哈希表中的每個元素,計算從這個元素開始的連續數組,通過哈希表進行掃描就可以
  • 這樣我們就只使用了 O ( n ) O(n) O(n)的時間復雜度解決這個問題
  • 最后返回結果即可

八【時間頻度】

  • 時間復雜度: O ( n ) O(n) O(n) n n n為傳入的數組的長度
  • 空間復雜度: O ( n ) O(n) O(n) n n n為傳入的數組的長度

九【代碼實現】

  1. Java語言版
class Solution {public int longestConsecutive(int[] nums) {HashSet<Integer> map = new HashSet<>();for(int i = 0;i < nums.length;i++){map.add(nums[i]);}int res = 0;for(int num : map){if(!map.contains(num - 1)){int curNum = num;int curLen = 1;while(map.contains(curNum + 1)){curNum += 1;curLen += 1;}res = Math.max(res, curLen);}}return res;}
}
  1. C語言版
struct HashNode
{int key;UT_hash_handle hh;
};int longestConsecutive(int* nums, int numsSize)
{struct HashNode* map = NULL;struct HashNode* tempNode = NULL;for(int i = 0;i < numsSize;i++){HASH_FIND_INT(map, &nums[i], tempNode);if(tempNode == NULL){struct HashNode* newNode = (struct HashNode*)malloc(sizeof(struct HashNode));newNode->key = nums[i];HASH_ADD_INT(map, key, newNode);}}struct HashNode *val, *temp;int res = 0;HASH_ITER(hh, map, val, temp){if(val != NULL){int lastVal = val->key - 1;HASH_FIND_INT(map, &lastVal, tempNode);if(tempNode == NULL){int curNum = val->key + 1;int curLen = 1;HASH_FIND_INT(map, &curNum, tempNode);while(tempNode != NULL){curNum += 1;curLen += 1;HASH_FIND_INT(map, &curNum, tempNode);}res = fmax(res, curLen);}}}HASH_ITER(hh, map, val, temp){HASH_DEL(map, val);free(val);}return res;
}
  1. Python語言版
class Solution:def longestConsecutive(self, nums: List[int]) -> int:map = set(nums)res = 0for num in map:if num - 1 not in map:curNum = numcurLen = 1while curNum + 1 in map:curNum += 1curLen += 1res = max(res, curLen)return res
  1. C++語言版
class Solution {
public:int longestConsecutive(vector<int>& nums) {unordered_set<int> map;for(int i = 0;i < nums.size();i++){map.insert(nums[i]);}int res = 0;for(const int& num : map){if(!map.count(num - 1)){int curNum = num;int curLen = 1;while(map.count(curNum + 1)){curNum += 1;curLen += 1;}res = max(res, curLen);}}return res;}
};

十【提交結果】

  1. Java語言版
    在這里插入圖片描述

  2. C語言版
    在這里插入圖片描述

  3. Python語言版
    在這里插入圖片描述

  4. C++語言版
    在這里插入圖片描述

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

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

相關文章

python re 模塊 正則表達式

一、正則表達式基本符號 ^ 表示匹配字符串的開始位置 (例外 用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字符串)$ 表示匹配字符串的結束位置* 表示匹配 零次到多次&#xff08;記憶方法&#xff1a;符號是星星&#xff0c;天上的星星可以是無數個也可以看不到&#x…

vue3+element-plus表格默認排序default-sort失效問題

場景 在使用動態數據渲染的場景&#xff0c;el-table設置默認屬性default-sort失效。 原因 el-table的default-sort屬性是針對靜態數據的&#xff0c;如果是動態數據&#xff0c;default-sort則無法監聽到。 案例&#xff1a;靜態數據 <template><el-table:data&…

馬斯克又出昏招、最瘋狂的舉動之一

馬斯克正在限制他不喜歡的新聞網站和競爭對手的流量。在 X&#xff08;原 Twitter&#xff09;上點擊紐約時報、路透社、Facebook、Instagram、Threads、Bluesky 和 Substack 的鏈接&#xff0c;X 故意增加 5 秒鐘的開啟延遲。 5 秒延遲&#xff0c;新的降權舉措&#xff1f; …

rust踩雷筆記(2)——一道hard帶來的思考[哈希表、字符串、滑動窗口]

今天被一道hard惡心壞了&#xff0c;算法不難&#xff0c;用C幾分鐘的事。用rust主要還是缺乏對語言的熟練度&#xff0c;記錄一下&#xff0c;主要的坑在下面這個操作&#xff1a; 對String取其中某個位置的char。 可能你會有疑問&#xff1a;這不是直接nth()取就行了么。沒錯…

聯想拯救者筆記本Win11系統鍵盤無法打字解決參考方法

一位好機友新購買的聯想拯救者筆記本在使用過程中突然發現整個鍵盤都不能使用了、不能打字、按任何按鍵都沒有反應&#xff0c;只有鼠標能正常操作&#xff1b;那么這是什么問題呢&#xff1f;能不能是筆記本的鍵盤壞了呢&#xff1f;還是筆記本出現了什么故障而引起鍵盤失靈呢…

LangChain手記 Evalutation評估

整理并翻譯自DeepLearning.AILangChain的官方課程&#xff1a;Evaluation&#xff08;源代碼可見&#xff09; 基于LLM的應用如何做評估是一個難點&#xff0c;本節介紹了一些思路和工具。 “從傳統開發轉換到基于prompt的開發&#xff0c;開發使用LLM的應用&#xff0c;整個工…

Linux 終端會話中,啟動任務并放到后臺運行

一、需求 linux要執行一個腳本&#xff0c;耗時很長&#xff0c;想要腳本在后臺運行&#xff0c;用戶注銷或終端軟件關閉時也可以繼續運行。 二、實現 1、nohup命令 腳本在后臺運行 nohup 是在 Linux 和類 Unix 系統中使用的一個命令&#xff0c;用于在后臺運行程序&#x…

Python爬蟲——scrapy_當當網圖書管道封裝

創建爬蟲項目 srcapy startproject scrapy_dangdang進入到spider文件里創建爬蟲文件&#xff08;這里爬取的是青春文學&#xff0c;仙俠玄幻分類&#xff09; srcapy genspider dang http://category.dangdang.com/cp01.01.07.00.00.00.html獲取圖片、名字和價格 # 所有的se…

c語言——查找特定字符在字符串中出現的次數

fgets 函數用于從標準輸入&#xff08;stdin&#xff09;中讀取一行字符串&#xff0c; 并將其存儲在指定的字符數組 str 中。 sizeof str/sizeof str[0] 是用來計算字符數組 str 的大小。 這個表達式計算的結果是字符數組 str 可以容納的元素個數&#xff08;包括…

【IMX6ULL驅動開發學習】07.驅動程序分離的思想之平臺總線設備驅動模型和設備樹

一、驅動程序分離的思想 【IMX6ULL驅動開發學習】05.字符設備驅動開發模板&#xff08;包括讀寫函數、poll機制、異步通知、定時器、中斷、自動創建設備節點和環形緩沖區&#xff09;_阿龍還在寫代碼的博客-CSDN博客 之前編寫驅動程序的代碼存在不少弊端&#xff1a;移植性差…

數學建模之“聚類分析”原理詳解

一、聚類分析的概念 1、聚類分析&#xff08;又稱群分析&#xff09;是研究樣品&#xff08;或指標&#xff09;分類問題的一種多元統計法。 2、主要方法&#xff1a;系統聚類法、有序樣品聚類法、動態聚類法、模糊聚類法、圖論聚類法、聚類預報法等。這里主要介紹系統聚類法…

神經網絡基礎-神經網絡補充概念-25-深層神經網絡

簡介 深層神經網絡&#xff08;Deep Neural Network&#xff0c;DNN&#xff09;是一種具有多個隱藏層的神經網絡&#xff0c;它可以用來解決復雜的模式識別和特征學習任務。深層神經網絡在近年來的機器學習和人工智能領域中取得了重大突破&#xff0c;如圖像識別、自然語言處…

Windows環境下安裝RabbitMQ

1.消息隊列中間件簡介 消息隊列中間件是分布式系統中重要的組件&#xff0c;主要解決應用耦合&#xff0c;異步消息&#xff0c;流量削鋒等問題實現高性能&#xff0c;高可用&#xff0c;可伸縮和最終一致性。 使用較多的消息隊列有 ActiveMQ&#xff08;安全&#xff09;&…

【腳踢數據結構】隊列(順序和鏈式)

(??? )&#xff0c;Hello我是祐言QAQ我的博客主頁&#xff1a;C/C語言,Linux基礎,ARM開發板&#xff0c;軟件配置等領域博主&#x1f30d;快上&#x1f698;&#xff0c;一起學習&#xff0c;讓我們成為一個強大的攻城獅&#xff01;送給自己和讀者的一句雞湯&#x1f914;&…

Ant Design Vue 下拉框輸入框 可以輸入 可以查詢

Ant Design Vue 下拉框 可以輸入 可以查詢 直接上代碼 效果圖 &#xff08;輸入內容查詢后端 返回下拉的值 &#xff0c;如何查詢后端是空的直接 把輸入的內容 賦值給 輸入框&#xff09; 在這里插入圖片描述 <template><div><a-selectv-model.lazy"i…

WPF CommunityToolkit.Mvvm

文章目錄 前言ToolkitNuget安裝簡單使用SetProperty&#xff0c;通知更新RealyCommandCanExecute 新功能&#xff0c;代碼生成器ObservablePropertyNotifyCanExecuteChangedForRelayCommand其他功能對應關系 NotifyPropertyChangedFor 前言 CommunityToolkit.Mvvm&#xff08;…

自適應AI chatgpt智能聊天創作官網html源碼

我們致力于開發先進的自適應AI智能聊天技術&#xff0c;旨在為用戶提供前所未有的聊天體驗。通過融合自然語言處理、機器學習和深度學習等領域的頂尖技術&#xff0c;我們的智能聊天系統能夠準確理解用戶的需求并給出相應的回應。 我們的自適應AI智能聊天系統具備以下核心特點…

MySQL面試題二

1、關系型和非關系型數據庫的區別&#xff1f; 關系型數據庫的優點 容易理解&#xff0c;因為它采用了關系模型來組織數據。 可以保持數據的一致性。 數據更新的開銷比較小。 支持復雜查詢&#xff08;帶 where 子句的查詢&#xff09; 非關系型數據庫&#xff08;NOSQL&#x…

fiddler抓包問題記錄,支持https、解決 tunnel to 443

fiddler下載安裝步驟及基本配置 fiddler抓包教程&#xff0c;如何抓取HTTPS請求&#xff0c;詳細教程 可能遇到的問題及解決方案 1. 不能正常訪問頁面&#xff08;所有https都無法訪問&#xff09; 解決方案&#xff1a;查看下面配置是否正確 Rules-customization 找到 OnB…

Vue中路由緩存問題及解決方法

一.問題 Vue Router 允許你在你的應用中創建多個視圖&#xff0c;并根據路由來動態切換這些視圖。默認情況下&#xff0c;當你從一個路由切換到另一個路由時&#xff0c;Vue Router 會銷毀前一個路由的組件實例并創建新的組件實例。然而&#xff0c;有時候你可能希望保持一些頁…