LintCode:M-落单的数II

xiaoxiao2021-02-28  118

LintCode链接

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

您在真实的面试中是否遇到过这个题?  Yes 样例

给出 [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; } }

转载请注明原文地址: https://www.6miu.com/read-42138.html

最新回复(0)