zoukankan      html  css  js  c++  java
  • 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?

    C++代码实现:

    #include<iostream>
    #include<map>
    using namespace std;
    
    class Solution
    {
    public:
        int singleNumber(int A[],int n)
        {
            multimap<int,int> mp;
            int i;
            for(i=0;i<n;i++)
            {
                mp.insert({A[i],i});
            }
            auto map_it=mp.begin();
            while(map_it!=mp.end())
            {
                auto fst=map_it;
                auto snd=map_it;
                fst++;
                snd++;
                snd++;
                if((fst)==mp.end()||snd==mp.end())
                    return (map_it)->first;
                if(map_it->first!=(fst)->first||map_it->first!=snd->first)
                    break;
                map_it++;
                map_it++;
                map_it++;
            }
            return map_it->first;
        }
    };
    
    int main()
    {
        Solution s;
        int arr[]={2,4,2,4,2,4,5,5};
        cout<<s.singleNumber(arr,8)<<endl;
    }

    第二遍刷:

        int singleNumber(int A[],int n)
        {
            multiset<int> st;
            int i;
            for(i=0;i<n;i++)
                st.insert(A[i]);
            for(i=0;i<n;i++)
                if(st.count(A[i])!=3)
                    break;
            return A[i];
        }
  • 相关阅读:
    Door man
    Borg Maze
    Agri-Net
    Highways
    Truck History
    Arctic Network
    QS Network
    用贝塞尔曲线实现水波效果
    在一个Label上设置多种颜色字体
    用UIImageView作出动画效果
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4106280.html
Copyright © 2011-2022 走看看