given an unsorted array of integers, find the length of the longest consecutive elements sequence.
for example, given [100, 4, 200, 1, 3, 2], e longest consecutive elements sequence is [1,
2, 3, 4]. return its length: 4.
your algorithm should run in o(n) complexity
老樣子,先分析,還是先不考慮約束條件,解決題目了再說;
解決方案1
先排序,直接呼叫stl中sort函式排序,再遍歷查詢最長的連續子串行;時間複雜度為o(n²)
解決方案2
使用hash表;用乙個雜湊表 unordered_mapused 記錄每個元素是否使用,對每個元素,以該
元素為中心,往左右擴張,直到不連續為止,記錄下最長的長度。時間複雜度為o(1)
#include #include#include
using
namespace
std;
int longestconsecutive1(int a,int
n)
else
break
; }
intk;
for (k = i-1; k>=0; k--)
else
break
; }
longest=max(longest,length);
}return
longest;
}int longestconsecutive(int a,int
n)
int right=a[i]+1
;
while(mp.count(right)&&mp[right]!=0
)
}if(resres=sum;
}return
res;
}int
main()
;
int ans1=longestconsecutive1(a,7
); cout
<<"
ans1 is
"int ans2=longestconsecutive(a,7
); cout
<<"
ans2 is
"}
測試通過!
ES6 第一部分
1.ecmascrpit是js的語言標準 現在es到11了,但是大版本是es6 2.es6的目標 使js能編寫複雜的大型程式 3.版本特色 常量,作用域,物件 非同步處理,類,繼承 1.use strict 後來被放棄了,因為會讓以前的 出現問題。2.禁止this指向window。顯示undefin...
Axure RP 第一部分
axure rp是乙個專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責定義需求和規格...
演算法知識梳理 4 陣列第一部分
在乙個二維陣列中,每一行都按照從左到右遞增的順序,每一列都按照從上到下遞增的順序排序,編寫乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷該整數是否在二位陣列中。首先要確定整數存在於陣列的乙個前提條件 如果最小的元素 左上角 大於d,或者最大的元素 右下角 小於d,那麼可以確定矩陣中不存在d。這裡需...