給定乙個未排序的整數陣列,找出最長連續序列的長度。思路說明要求你的演算法複雜度為o(n)
樣例給出陣列[100, 4, 200, 1, 3, 2],這個最長的連續序列是 [1, 2, 3, 4],返回所求長度 4
標籤陣列
由於限定了時間複雜度為 o(n),所以採取先排序再遍歷的方式是不適合的,於是以空間換時間,用 set 儲存 num 中的數字,方便檢測 num 中某個數字是否存在,思路如下:
遍歷 num 陣列中的每個數字,如果其在 set 中存在,那麼將其移除,然後分別用兩個變數 pre 和 next 算出其前乙個數跟後乙個數,然後在集合中迴圈查詢,
如果 pre 在 set 中,那麼將 pre 移除集合,然後 pre--,直至pre不在集合之中,對next採用同樣的方法,
next-pre-1就是當前數字的最長連續序列
code
class solution
sets(num.begin(), num.end());
for (int i=0; inext-pre-1 ? result : next-pre-1;
}return result;
}};
LintCode刷題 124 最長連續序列
給定乙個未排序的整數陣列,找出最長連續序列的長度。說明 要求你的演算法複雜度為o n 樣例 給出陣列 100,4,200,1,3,2 這個最長的連續序列是 1,2,3,4 返回所求長度 4 從乙個陣列整數陣列中找最長的連續序列。首先,連續序列的意思是 1,2,3,4,7 其中,1,2,3,4 就是連...
LintCode刷題 最長上公升連續子串行
問題描述 給定乙個整數陣列 下標從 0 到 n 1,n 表示整個陣列的規模 請找出該陣列中的最長上公升連續子串行。最長上公升連續子串行可以定義為從右到左或從左到右的序列。樣例 給定 5,4,2,1,3 其最長上公升連續子串行 lics 為 5,4,2,1 返回4.給定 5,1,2,3,4 其最長上公...
二叉樹最長連續序列 LintCode
描述 給一棵二叉樹,找到最長連續路徑的長度。這條路徑是指 任何的節點序列中的起始節點到樹中的任一節點都必須遵循 父 子 聯絡。最長的連續路徑必須是從父親節點到孩子節點 不能逆序 樣例 舉個例子 1 3 2 4 5最長的連續路徑為 3 4 5,所以返回 3。2 3 2 1最長的連續路徑為 2 3 而不...