查詢陣列中三個只出現一次的數字

2021-06-25 11:21:10 字數 852 閱讀 5962

取x為1的第m位,a,b,c的結果的第m位,可能即0,0,1,或1,1,1

證明:假設0,0,0  x第m位 0.

1,0,0   x第m位 1.

1,1,0    x第m位 0.

1,1,1     x第m位 1.

把所有m位為1的數進行異或,得到y.如果y!=x,則a,b,c的第m位狀態為1,1,0.即第m位為1的陣列中,a,b,c中兩個。

取y為1的那一位n,則取第m位為1和第n位為1的數進行異或得到a,b,c中的乙個。則取第m位為1和第n位為0的數進行異或得到a,b,c中的乙個

第m位為0的陣列中有a,b,c中的乙個。

把所有第m位為0的陣列中的數異或得到z,則z為a,b,c中最後乙個。

把所有m位為1的數進行異或,得到y.如果y=x,則a,b,c的第m位狀態為1,1,1.則查詢x下一位為1的m位,找到以後,和上面的處理相同。

因為a,b,c各不相同,則一定存在第m位,a,b,c不全為1或0;這個可以通過從第0位開始遍歷找到。

找到第m位以後,把第m位為1的所有數進行異或,可以得到a,b,c中的乙個。把這個數從陣列中拿出來,就只剩兩個了。

把剩下的數異或得到x,去x為1的第m位,進行異或得到其中的乙個,把第m位為0的數進行異或,得到另乙個。

陣列中三個只出現一次的數字

此文 此問題的相關問題 陣列中兩個只出現一次的數字 題目 乙個陣列中有三個數字a b c只出現一次,其他數字都出現了兩次。請找出三個只出現一次的數字。分析 在部落格 中我們討論了如何在乙個陣列中找出兩個只出現一次的數字。在這道題中,如果我們能夠找出乙個只出現一次的數字,剩下兩個只出現一次的數字就很容...

陣列中三個只出現一次的數字

2012 09 30 20 42 46 分類 陣列 標籤 演算法google 微軟面試題 程式設計 舉報 字型大小 訂閱 題目 乙個陣列中有三個數字a b c只出現一次,其他數字都出現了兩次。請找出三個只出現一次的數字。分析 在部落格中我們討論了如何在乙個陣列中找出兩個只出現一次的數字。在這道題中,...

陣列中三個只出現一次的數字

題目 乙個陣列中有三個數字a b c只出現一次,其他數字都出現了兩次。請找出三個只出現一次的數字。分析 在部落格中我們討論了如何在乙個陣列中找出兩個只出現一次的數字。在這道題中,如果我們能夠找出乙個只出現一次的數字,剩下兩個只出現一次的數字就很容易找出來了。如果我們把陣列中所有數字都異或起來,那最終...