LeetCode|| Single Number II

来源:互联网 发布:百度数据库在哪里 编辑:程序博客网 时间:2024/06/08 11:33

方法一:

使用位运算的方法,耗时20ms.

class Solution {public:    int singleNumber(vector<int>& nums) {        int flag = 1;        int curr = 0;        int count = 0;                vector<int> v;        while(flag)//这样做为了避免出现负数        {            count = 0;            for(int i = 0;i<nums.size();i++)            {                if(flag & nums[i])                    count++;            }            v.push_back(count%3);            flag = flag << 1;        }                curr = 0;        for(int i = v.size()-1;i>=0;i--)        {            curr = curr << 1;            curr += v[i];        }        return curr;    }};

方法二:位运算的另一种实现。耗时24ms.


class Solution {public:    int singleNumber(vector<int>& nums) {        int flag = 0;        int curr = 0;        int count = 0;                while(flag<32)//这样做为了避免出现负数        {            count = 0;            for(int i = 0;i<nums.size();i++)            {                if((nums[i] >> flag)&1)                    count++;            }            curr |= (count%3)<<flag;            flag++;        }                return curr;    }};


0 0
原创粉丝点击