single-number-ii

来源:互联网 发布:安装人工智能计算器 编辑:程序博客网 时间:2024/06/08 04:52
题目描述

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?

IDEA

通用的解法

int 整型共有32位,用bitnum[32]存储这n个数据每个二进制位上1出现的个数,再%3,如果为1,那说明这一位是要找元素二进制表示中为 1 的那一位。

如果是每个数都出现K次,则%k即可

CODE

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


0 0