hello congshen

自我成长

[leetcode] 【数组】 137. Single Number II

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次,找出这个元素。

题解

这里也是根据位的特性来处理,用于一个int所占bit数大小的数组count来存储二进制数的每一位。
把nums数组所有数都按位加在count数组中,然后对3求余,剩下的数就是只出现一次的数。

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        const int sizeint=sizeof(int)*8;
        vector<int> count(sizeint);
        for(auto i: nums)
        {
            for(int j=0;j<sizeint;j++)
            {
                count[j]+=(i>>j) &1;
                count[j]%=3;
            }
        }
        int res=0;
        for(int i=0;i<sizeint;i++)
            res+=(count[i]<<i);
        return res;
    }
};



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014654002/article/details/51536107
文章标签: leetcode cpp
个人分类: leetcode数组 c-c++
上一篇[leetcode] 【数组】 136. Single Number
下一篇[leetcode] 第一类--【数组】 题大纲
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭