範文齋

位置:首頁 > 職場範文 > 面試

百度面試題目

面試3.22W

1 完成函數

百度面試題目

size_t foo(unsigned int *a1, size_t al1, unsigned int* a2, size_t al2)

其中a1和a2都爲無符號數組,al1和al2爲數組的長度,數組的長度爲偶數。

無符號數組由一對數字區間組成。如下例:

a1 爲 0,1,3,6,10,20

a2 爲 0,1,20,50,4,5

則 a1表示以下區間[0,1] [3,6] [10,20]

a2表示以下區間[0,1] [20,50] [4,5]

則a1,a2的重疊部分爲[0,1] [4,5],其長度爲2

函數foo要求返回重疊區間的長度。上例中爲2.

要求:

詳細說明自己的解題思路,說明自己實現的一些關鍵點。

寫出函數foo原代碼,另外效率儘量高,並給出代碼的複雜性分析。

限制:

al1和al2的長度不超過100萬。而且同一個數組的區間可能出現重重疊。

如a1可能爲 0,5, 4,8, 9,100, 70,80

使用的存儲空間儘量小。

2 多人排成一個隊列,我們認爲從低到高是正確的序列,但是總有部分人不遵守秩序。如果說,前面的人比後面的人高(兩人身高一樣認爲是合適的),那麼我們就認爲這兩個人是一對“搗亂分子”,比如說,現在存在一個序列:

176, 178, 180, 170, 171

這些搗亂分子對爲<176, 170>, <176, 171>, <178, 170>, <178, 171>, <180, 170>, <180, 171>,

那麼,現在給出一個整型序列,請找出這些搗亂分子對的個數(僅給出搗亂分子對的數目即可,不用具體的.對)

要求:

輸入:

爲一個文件(in),文件的每一行爲一個序列。序列全爲數字,數字間用”,”分隔。

輸出:

爲一個文件(out),每行爲一個數字,表示搗亂分子的對數。

詳細說明自己的解題思路,說明自己實現的一些關鍵點。並給出實現的代碼 ,並分析時間複雜度。

限制:

輸入每行的最大數字個數爲100000個,數字最長爲6位。程序無內存使用限制。

二、下面是兩道選做題,請根據自己的情況選擇其中的一道作答(WEB方向請答第4道,其他職位方向答第3道)。

3

考慮一個在線好友系統。系統爲每個用戶維護一個好友列表,列表限制最多可以有500個好友,好友必須是這個系統中的其它用戶。好友關係是單向的,用戶B是用戶A的好友,但A不一定是B的好友。

用戶以ID形式表示,現給出好友列表數據的文本形式如下:

1 3,5,7,67,78,3332

2 567,890

31 1,66

14 567

78 10000

每行數據有兩列,第一列爲用戶ID,第二列爲其好友ID,不同ID間用”,”分隔,ID升序排列。列之間用”t”分隔。

要求:

設計合適的索引數據結構,來完成以下查詢:

給定用戶A

標籤:面試 百度 題目