您的位置:首页 > 其它

lintcode,落单的数 II

2016-12-18 21:54 267 查看
给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。

一刷没ac

解题思路:将每个数字转成bit,每个数字出现n次的话,对应每一位的和模n一定会有一个余数,这个余数就是由出现一次的数字造成的,因此可以求解。

public class Solution {
/**
* @param A : An integer array
* @return : An integer
*/
public int singleNumberII(int[] A) {
if(A == null || A.length == 0) return 0;
int res = 0;
for(int i = 0; i < 32; i++){
int sum = 0;
for(int j = 0; j < A.length; j++){
sum += (A[j] >> i) & 1;
sum %= 3;
}
if(sum != 0) res |= (sum<<i);
}
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lintcode