40 百度研發筆試題(棧 演算法)

2021-06-05 05:11:56 字數 1419 閱讀 8940

引用自:zp155334877

1)設計乙個棧結構,滿足一下條件:min,push,pop操作的時間複雜度為o(1)。

2)一串首尾相連的珠子(m個),有n種顏色(n<=10),

設計乙個演算法,取出其中一段,要求包含所有n中顏色,並使長度最短。

並分析時間複雜度與空間複雜度。

**見下:

最短摘要的生成

3)設計乙個系統處理詞語搭配問題,比如說 中國 和人民可以搭配,

則中國人民 人民中國都有效。要求:

*系統每秒的查詢數量可能上千次;

*詞語的數量級為10w;

*每個詞至多可以與1w個詞搭配

當使用者輸入中國人民的時候,要求返回與這個搭配片語相關的資訊。

方案:步驟:

1. 分詞.

2. 判斷是否搭配

一。分詞的判斷

如果不考慮歧義,可以用wm基於shift表的詞表匹配方法,在o(length(input))時間內完成分詞。

如果考慮歧義,用專用分詞系統。時間複雜度待查。

暫時不考慮歧義。

wm表占用記憶體大概5m以內.

二。判斷是否搭配

用二維向量表示10w個詞之間的搭配資訊。每個詞-詞搭配資訊占用乙個bit,共 10w * 10w bit,大概

160mbyte.

分詞完成後,可以在o(1)時間內完成搭配資訊的查詢。

上述處理在普通pc(amd 雙核2.5g hz,2g記憶體)上可以在一百-五百微秒時間範圍內完成,即每秒至少可以

處理兩千次查詢。

參考://coder:lee,20120322

#include

#include

using namespace std;

struct index

;index shortestsectionwithfullcolors(int *a,int nlength,int ncolors)

while(true)

while(ntargetlen==ncolors)

hash[a[pbegin]]--;

if(hash[a[pbegin]]==0)

ntargetlen--;

pbegin++;

if(pbegin>=nlength)

break;

}if(pbegin>=nlength)

break;

}return index;

}int main()

;int nlen=sizeof(a)/sizeof(int);

index index=shortestsectionwithfullcolors(a,nlen,3);

for (int i=index.behind;i!=index.front;)

return 0;

}

百度 2015 武漢研發筆試題

一 簡答題 1.列出至少6中內排序方法,並寫出相應的時間複雜度和空間複雜度以及穩定性 2.多執行緒中的同步互斥方法都有哪些?3.程序間通訊的方式有哪些?哪種是效率最高的?socket,pipe,共享記憶體,訊息佇列,訊號,訊號量 效率最高的是 共享記憶體。360面試中問到了共享記憶體在系統中是如何實...

2013百度研發筆試

一 簡答題 1.動態鏈結庫和靜態鏈結庫的優缺點 2.輪詢任務排程和可搶占式排程有什麼區別?3.列出資料庫中常用的鎖及其應用場景 二 演算法設計題 1.給定n是乙個正整數,求比n大的最小 不重複數 這裡的不重複是指沒有兩個相等的相鄰位,如1102中的11是相等的兩個相鄰位故不是不重複數,而12301是...

百度2014移動研發筆試題目

1.簡述計算機的儲存系統分為哪幾個層次,為什麼這樣的分層能夠提高程式的執行效率。2.浮點數在計算中如何表示,如何對浮點數判等。3.簡述tcp與udp協議的差別,兩者與http的關係。並列舉http的方法,以及常見的返回狀態碼。二.演算法與程式設計 1.設計乙個反轉字串的函式 char reverse...