LeetCode128 最長連續序列

2021-09-25 14:45:55 字數 959 閱讀 2417

原題目

給定乙個未排序的整數陣列,找出最長連續序列的長度。

要求演算法的時間複雜度為 o(n)。

示例:輸入: [100, 4, 200, 1, 3, 2]

輸出: 4

解釋: 最長連續序列是 [1, 2, 3, 4]。它的長度為 4。

題目分析

方法一:排序直接查詢法

先對陣列進行快排,然後從開始開始比較前後兩者是否相差1,相差1則計數,如果相等則跳過,否則重新計數。

方法二:雜湊表法

將值傳入hash表中,判斷nums[ i ] - 1是否在hash表中,存在則跳過,不存在,就迴圈判斷其nums[ i ] ++是否在hash表中,並統計當前的個數,然後與最大值進行比較,跳到下乙個執行以上操作。

完整**

快排直接查詢

int

cmp(

const

void

*a ,

const

void

*b)int

longestconsecutive

(int

* nums,

int numssize)

return maxlen;

}

雜湊表

typedef

struct hash_node

hash_node;

intlongestconsecutive

(int

* nums,

int numssize)

int k=

1,max=0;

for(

int i=

0;i(maxmax=k;

k=1;

}return max;

}

總結

熟悉uthash.h的操作

leetcode128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。建立乙個dict,如果num不在裡面就檢視左右連續長度,再給num和左右處賦值 class solution...

Leetcode 128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。複製 這道題目最開始大家想的肯定是sort,然後計數計算最長序列。但是要求時間複雜度為 o n 就不能用so...

leetcode 128 最長連續序列

給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。class solution def longestconsecutive self,nums list i...