面試題 黑白球問題

2021-10-08 06:47:22 字數 971 閱讀 1670

有的人上來就想該如何計算概率,實際上這是一道思維題,一種方式是我們可以通過找規律來得到結果。可以分析每種情況:

所以每次操作,桶裡的球的總數總會-1,到最後桶裡肯定剩1個球。

白球要麼數量不變,要麼減少2個。那麼到最後剩的那個球一定是黑球。所以最後剩黑球的概率是1。

相同就放進乙個黑球,不同就放進乙個白球,有點類似異或運算,即兩數相同結果為0,兩數不同結果為1。ab

a ⨁b

a \bigoplus b

a⨁b000

1010

1111

0所以可以把黑球看成數字0,白球看成數字1,取球的人就相當於是乙個計算異或的函式,輸入兩個數,返回乙個結果。所以問題就轉化為了100個0和100個1做異或運算。結果為0,即盒裡最後剩乙個黑球。

如果把問題中的100個黑球和100個白球換成n和m,怎麼做?其實思路還是和解法二一樣,相當於n個0和m個1進行異或操作。這裡n和m都是大於0的正整數。

這時候就要看m的奇偶性了:nm

n+m結果

奇數偶數奇數0

奇數奇數偶數1

偶數偶數偶數0

偶數奇數奇數1

因為n表示黑球的個數,即0的個數,不論多少個0,異或運算結果都是0,但是奇數個1異或結果為1,偶數個1異或結果為0,這就影響了最終的結果,所以和結果和m的奇偶性有關。

結論:如果m為奇數,結果為1,即最終剩乙個白球;如果m為偶數,結果為0,即最終剩乙個黑球。

問題描述:給你乙個陣列,每個其中每個元素都出現了兩次,只有乙個元素出現了1次,找出只出現了1次的這個元素。

問題分析:當然,你可以先把陣列排序,然後遍歷,找到那個出現了1次的元素,但是這麼做的時間複雜度是o(n

logn

)+o(

n)

o(nlogn) + o(n)

o(nlog

n)+o

(n) ,乙個更好的方法是將陣列中的所有元素進行異或,結果即為只出現了1次的元素。

百度面試題 摸黑白球

乙個桶,100個黑球100個白球,每次取走兩個球,如果同色則放入乙個黑球,如果異色則放入乙個白球。求最後只剩下乙個黑球的概率。一 首先排除了計算機模擬的思路,因為最後答案要求的概率,計算機模擬出的都是頻率,所以這個方法肯定行不通,kill。二 用算,當然肯定希望每次取的概率能夠累加化簡,做了一會兒,...

12個球問題 微軟面試題

現有12個球,其中有乙個是次品,但不知道它比正常的重還是輕,現在只有天平一架,請稱3次找出次品球。首先,把12個小球分成三等份,每份四隻。拿出其中兩份放到天平兩側稱 第一次 情況一 天平是平衡的。那麼那八個拿上去稱的小球都是正常的,特殊的在四個裡面。把剩下四個小球拿出三個放到一邊,另一邊放三個正常的...

程式設計之美 黑白球問題

題目 有乙個桶,裡面有白球 黑球各100個,人們必須按照以下的規則把球取出來 1 每次從桶裡面拿出來兩個球 2 如果是兩個同色的球,就再放入乙個黑球 3 如果是兩個異色的球,就再放入乙個白球 問 最後桶裡面只剩下乙個黑球的概率是多少?思路1 找規律 使用 黑球個數,白球個數 來表示桶中黑球和白球的個...