題目:給定乙個未排序的整數陣列,找出最長連續序列的長度。
例子:給出陣列[100, 4, 200, 1, 3, 2],這個最長的連續序列是 [1, 2, 3, 4],返回所求長度 4。
挑戰:要求你的演算法複雜度為o(n)。
方法:。將序列中的所有數存到乙個unordered_set中。對於序列裡任意乙個數a[i],我們可以通過set馬上能知道a[i]+1和a[i]-1是否也在序列中。如果在,繼續找a[i]+2和a[i]-2,以此類推,直到將整個連續序列找到。為了避免在掃瞄到a[i]-1時再次重複搜尋該序列,在從每次搜尋的同時將搜尋到的數從set中刪除。直到set中為空時,所有連續序列搜尋結束。由於每個數字只被插入set一次,並刪除一次,所以演算法是o(n)的。
class solution
int max = 0;
for (int i = 0; i < nums.size(); i++)
int down = nums[i] - 1;
while (hash.find(down) != hash.end())
if (up - down - 1 > max)
}return max;
}};
最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 1,2,3,4 它的長度為 4。思路 用乙個字典儲存中間值遍歷陣列,對於數字i,找到的i 1和i 1的對應的值值,如果不存在則記為0。然後把我的值值設為i 1,i 1個的值值之和,並加1,相當於連線起來。同時置...
最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。時間複雜度o n log n public intlongestconsecutive int nums a...
最長連續序列
題目 給定乙個未排序的整數陣列,找出最長連續序列的長度。要求演算法的時間複雜度為 o n 示例 輸入 100,4,200,1,3,2 輸出 4 解釋 最長連續序列是 1,2,3,4 它的長度為 4。只有當乙個數是連續序列的第乙個數的情況下才會進入內層迴圈,然後在內層迴圈中匹配連續序列中的數。if n...