程式設計師面試題目總結 陣列 26 最長連續序列

2021-06-23 01:29:24 字數 706 閱讀 8933

26、最長連續序列

題目:給定乙個任意整數序列,返回序列中最長連續序列的長度。如[100, 4, 200, 1, 3, 2],最長連續序列為[1,2,3,4],返回長度4。要求時間複雜度為o(n)

分析:如果允許o(n log n) 的複雜度,那麼可以先排序,可是本題要求o(n)。由於序列裡的元素是無序的,又要求o(n),首先要想到用雜湊表。用乙個雜湊表hash_mapused 記錄每個元素是否使用,對每個元素,以該元素為中心,往左右擴張,直到不連續為止,記錄下最長的長度。   

#include#include #include using namespace std;

using stdext::hash_map;

int longestconsecutive(const vector&num)

{ hash_mapused;

for (int i=0;i注:在vs2008中使用hashmap時,出現錯誤:

error c2065: 「hash_map」: 未宣告的識別符號。

這是因為hash_map目前是vs2008的乙個擴充套件,並沒有在標準的c++中。要想使用hash_map,需要using namespace stdext;但是,這很可能產生命名空間衝突,可以加上:using stdext::hash_map.

程式設計師面試題

2013 10 12 14 05 867人閱讀收藏 舉報9月5日,華為2014校園招聘的機試題目 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1 僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複...

XX網c 程式設計師面試題目

逆序列印鍊錶,不借助其他工具。void printlistreverse listnode head printf d n head value linux系統中cp和mv的區別。cp 將檔案或者目錄拷貝到另乙個目錄中。mv 將檔案或者目錄轉移到另乙個目錄中。從inode角度分析 cp 只會複製資料...

程式設計師必備面試題

1 使用main函式的引數,實現乙個整數計算器,程式可以接受三個引數,第乙個引數 a 選項執行加法,s 選項執行減法,m 選項執行乘法,d 選項執行除法,後面兩個引數為運算元。例如 輸入test.exe a 1 2 執行1 2輸出3 define crt secure no warnings 1 i...