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
使用的儲存空間盡量小。
解題方法:先對兩個陣列的區間進行排序,排序規則以區間的第乙個數為鍵,然後將乙個陣列構建二叉排序樹,將另乙個陣列中的區間一次在二叉排序樹中查詢。 時間複雜度(nlogn) 。
有人提出了log(+n)的複雜度,就是將兩個陣列排序,排序規則如上,然後對兩個陣列進行歸併,歸併出的結果即為所得。
2 多人排成乙個佇列,我們認為從低到高是正確的序列,但是總有部分人不遵守秩序。如果說,前面的人比後面的人高(兩人身高一樣認為是合適的),那麼我們就認 為這兩個人是一對「搗亂分子」,比如說,現在存在乙個序列:
176, 178, 180, 170, 171
這些搗亂分子對 為<176, 170>, <176, 171>, <178, 170>, <178, 171>, <180, 170>, <180, 171>,
那麼,現在給出乙個整型序列,請找出這些搗亂分子對的個數(僅給 出搗亂分子對的數目即可,不用具體的對)
要求:輸入:
為乙個檔案(in),檔案的每一行為乙個序列。序列全為數字,數字 間用」,」分隔。
輸出:為乙個檔案(out),每行為乙個數字,表示搗亂分子的對數。
詳細說明自己的解題思路,說明自己 實現的一些關鍵點。並給出實現的** ,並分析時間複雜度。
限制:輸入每行的最大數字個數為100000個,數字最長為6位。程 序無記憶體使用限制。
百度面試題
有一根27厘公尺的細木桿,在第3厘公尺 7厘公尺 11厘公尺 17厘公尺 23厘公尺這五個位置上各有乙隻螞蟻。木桿很細,不能同時通過乙隻螞蟻。開始時,螞蟻的頭朝左還是朝右是任意的,它們只會朝前走或調頭,但不會後退。當任意兩隻螞蟻碰頭時,兩隻螞蟻會同時調頭朝反方向走。假設螞蟻們每秒鐘可以走一厘公尺的距...
百度面試題
一 選擇題 15分 共10題 1.任何乙個基於 比較 的內部排序的演算法,若對6個元素進行排序,則在最壞情況下所需的比較次數至少為 a 10 b 11 c 21 d 36 2.關係模型有三類完整性約束,定義外來鍵實現的是 完整性.a.實體完整性 b.參照完整性 c.使用者定義的完整性 d.實體完整性...
百度面試題
1.乙個int陣列,裡面資料無任何限制,要求求出所有這樣的數a i 其左邊的數都小於等於它,右邊的數都大於等於它。能否只用乙個額外陣列和少量其它空間實現。2.乙個檔案,內含一千萬行字串,每個字串在1k以內,要求找出所有相反的串對,如abc和cba。當時怎麼想的忘記了,現在重新思考一下,檔案的大小上限...