【single-number-ii】

来源:互联网 发布:知乎怎么发布话题 编辑:程序博客网 时间:2024/06/05 20:22

Given an array of integers, every element appears three times except for one. Find that single one.

Note: 

Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?


思路:若一个数出现三次,则其对应的二进制数每一位相加必为3或者0。统计数组中元素的每一位,若为3的倍数,所求数的二进制位对3取余为0

否则为1

class Solution{public:int singleNumber(int A[], int n){int bit[32] = {0};int res = 0;for (int i=0; i<32; i++){for (int j = 0; j < n; j++){bit[i] += (A[j] >> i) & 1;res |= (bit[i]%3)<<i;}}return res;}};


原创粉丝点击