LintCode:M-落单的数II

来源:互联网 发布:php 获取请求端口号 编辑:程序博客网 时间:2024/04/28 01:09

LintCode链接

给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。

样例

给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4


public class Solution {/** * @param A : An integer array * @return : An integer  */    public int singleNumberII(int[] A) {        //int 为 32 位        //相同数的每个数位一致        //如果数位的1个数为3的倍数,则为出现3次的数,反之为需要找的那个数        int[] bits = new int[32];        int res=0;        for(int i=0; i<32; i++){//求每个数位的个数,余数为要找的数的数位上的值            for(int j=0; j<A.length; j++){                bits[i]+=A[j]>>i & 1;//第i位为1的个数            }            bits[i] = bits[i]%3;            res = res | bits[i]<<i; //把bits[i]移位会应该在的数位        }                return res;    }}


原创粉丝点击