美文网首页
leetcode算法

leetcode算法

作者: 俩芦苇 | 来源:发表于2016-04-14 01:23 被阅读23次

Single Number II

问题描述

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

解决方案

  • 思路1
int singleNumber(vector<int>& nums)
{
    //特殊情况1
    if(nums.size() == 0)
    {
        return 0;
    }

    //特殊情况2
    if(nums.size() == 1)
    {
        return nums.at(nums.size()-1);
    }

    size_t count = 1;

    sort(nums.begin(), nums.end());

    for(size_t index=0; index<nums.size()-1; ++index)
    {
        if(nums.at(index) == nums.at(index+1))
        {
            count++;
        }
        else
        {
            if(count < 3)
            {
                return nums.at(index);
            }

            count = 1;
        }
    }

    //特殊情况3 最后一个是single number的特殊情况
    return nums.at(nums.size()-1);
}
  • 思路2
int singleNumber(vector<int>& nums)
{
    int result = 0;
    vector<int> count(32, 0);

    for(int i=0; i<count.size(); ++i)
    {
        for(int j=0; j<nums.size(); ++j)
        {
            count[i] += 1 & (nums.at(j) >> i);
        }
    }

    for(int i=0; i<count.size(); ++i)
    {
        if(count.at(i) %3 != 0)
            result = result + (1<<i);
    }
    return result;
}
  • 思路2
int singleNumber(vector<int>& nums)
{
    int counterOne = 0;
    int counterTwo = 0;

    for (int i = 0; i < nums.size(); i++)
    {
        counterOne = (~counterTwo) & (counterOne ^ nums[i]);
        counterTwo = (~counterOne) & (counterTwo ^ nums[i]);
    }

    return counterOne;    
}

相关文章

  • Swap Nodes in Pairs

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Swap Nodes in ...

  • Combination Sum II

    标签: C++ 算法 LeetCode DFS 每日算法——leetcode系列 问题 Combinatio...

  • Divide Two Integers

    标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Divide Two Integ...

  • First Missing Positive

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 First Missing...

  • Valid Sudoku

    Valid Sudoku 标签: C++ 算法 LeetCode 每日算法——leetcode系列 问题 Val...

  • Next Permutation

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Next Permuta...

  • Trapping Rain Water

    标签: C++ 算法 LeetCode 数组 每日算法——leetcode系列 问题 Trapping Rain...

  • Combination Sum

    标签: C++ 算法 LeetCode 数组 DFS 每日算法——leetcode系列 问题 Combinat...

  • Remove Nth Node From End of List

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Remove Nth Nod...

  • Merge k Sorted Lists

    标签: C++ 算法 LeetCode 链表 每日算法——leetcode系列 问题 Merge Two Sort...

网友评论

      本文标题:leetcode算法

      本文链接:https://www.haomeiwen.com/subject/lfdglttx.html