百度面試題

2021-09-06 17:59:04 字數 939 閱讀 9706

題目:為分析使用者行為,系統常需儲存使用者的一些query,但因query許多,故系統不能全存,設系統每天僅僅存m個query,現設計乙個演算法,對使用者請求的query進行隨機選擇m個,請給乙個方案,使得每乙個query被抽中的概率相等,並分析之,注意:不到最後一刻,並不知使用者的總請求量。

解析:取乙個[1,m+i]中的隨機數,假設隨機數落在(m,m+i]時,應該保留原來的m個數;假設隨機數落在[1,m]中,則應該用最新的一條記錄代替[1,m]中隨機的乙個數。

證明例如以下:

如果如今系統讀取第n+1條記錄,如今儲存的m條記錄都是前面m+n條記錄中以m/(m+n)的概率留下來的;

取乙個[1,m+n+1]的隨機數,依照上述策略。

如今新記錄能保留在m陣列的概率為m/(m+n+1)

原來m陣列中的數(設為a)在本輪選擇中還能保留的條件概率(條件是,上一輪選擇中,a被保留):

(n+1)/(m+n+1)+m/(m+n+1)*(1-1/m)=(m+n)/(m+n+1)。

然後要乘以其原來保留下的概率。得到的a仍在m陣列中的概率為m/(m+n+1)。

簡單而言就是分為兩種情況:

1、原來m陣列中的數被替換成功的概率:

就是說這個數本來肯定被選中了,並且被新選擇的人乙個所替換(可是不包含新加入的那個數,因為新加入,不好加入選擇佇列)

m/(m+n)*(m+n)/(m+n+1)=m/(m+n+1)

2、原來m陣列中的數保留下來的概率:

新的選擇情況下選擇了[1,m]之間的數可是並沒有替換這個數

m/(m+n+1)*(1-1/m)=(m-1)/(m+n+1)

當m<

百度面試題

有一根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。當時怎麼想的忘記了,現在重新思考一下,檔案的大小上限...