給定一個包含n個整數的數組,除了一個數出現一次外全部的整數均出現三次,找出這個只出現一次的整數。

題目來源:    數組

  • http://oj.leetcode.com/problems/single-number-ii/       spa

  •  

  •  

  •  

  •  

  •  

  • 題目分析: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記錄的便是最終結果。擴展

相關文章
相關標籤/搜索