Leetcode76: Single Number II

来源:互联网 发布:内地网络恐怖片 编辑:程序博客网 时间:2024/06/07 10:42

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?

两种解法都是通用的,但并不是最快的。

解法一:

class Solution {public:    int singleNumber(vector<int>& nums) {        if(nums.size() == 0)            return 0;        else if(nums.size() == 1)            return nums[0];        sort(nums.begin(), nums.end());        for(int i = 0; i < nums.size()-1;)        {            if(nums[i] == nums[i+1])                i+=3;            else            {                return nums[i];            }            if(i == nums.size()-1)                return nums[i];        }    }};

解法二:

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


0 0
原创粉丝点击