82. 落單的數 ( 位運算-統計 )

lankerens發表於2020-12-12

LintCode: 82. 落單的數

在這裡插入圖片描述


老問題了。

解決一個數出現一次,其他出現 n 次的 模板


AC Code

public class Solution {
    /**
     * @param A: An integer array
     * @return: An integer
     */
    public int singleNumber(int[] a) {
        // write your code here
        int len = a.length;
        int ans = 0;
        int[] count = new int[32];
        
        for(int i = 0; i < len; i++){
            for(int j = 0; j < 32; j++){
                count[j] += a[i] & 1;
                // 右移
                a[i] = a[i] >>> 1;
            }
        }
        
        // 計算結果
        // k 其他出現了 2 次
        int k = 2;
        
        for(int i = 31; i >= 0; i--){
            ans <<= 1;
            ans |= count[i] % k ;
        }
        return ans;
    }
}



相關文章