題目來源: 數組
題目分析:code
對於除出現一次以外的全部的整數,其二進制表示中每一位1出現的次數是3的整數倍,將全部這些1清零,剩下的就是最終的數。three
用ones記錄到當前計算的變量爲止,二進制1出現「1次」(mod 3 以後的 1)的數位。用twos記錄到當前計算的變量爲止,二進制1出現「2次」(mod 3 以後的 2)的數位。當ones和twos中的某一位同時爲1時表示二進制1出現3次,此時須要清零。即 用二進制模擬三進制計算 。最終ones記錄的是最終結果。leetcode
時間複雜度: O(n)get
示例代碼:class
singleNumber( A[], ones = , twos = , xthrees = ( i = ; i < n; ++|= (ones &^== ~(ones &&=&=
擴展一: 變量
給定一個包含n個整數的數組,除了一個數出現二次外全部的整數均出現三次,找出這個只出現二次的整數。ones記錄1出現一次的數,twos記錄1出現2次的數,容易知道twos記錄的便是最終結果。擴展