zoukankan      html  css  js  c++  java
  • Single Number

    Given an array of integers, every element appears twice except for one. Find that single one.

    Note:
    Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?

    注意:多关键字的multimap不能使用下标操作。

    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 tmp=map_it;
                tmp++;
                if((tmp)==mp.end())
                    return (map_it)->first;
                if(map_it->first!=(tmp)->first)
                    break;
                map_it++;
                map_it++;
            }
            return map_it->first;
        }
    };
    
    int main()
    {
        Solution s;
        int arr[]={2,4,2,4,5};
        cout<<s.singleNumber(arr,5)<<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])!=2)
                    break;
            return A[i];
        }
  • 相关阅读:
    Trie树
    递归函数两种方式的区别
    揭开HTTPS的神秘面纱
    补码到底是个什么东西
    浮点数的运算精度丢失
    PHP的stdClass
    2019-10-24
    MySQL存储引擎
    代码整洁之道小结
    NFS4 挂载同主机多个目录
  • 原文地址:https://www.cnblogs.com/wuchanming/p/4106240.html
Copyright © 2011-2022 走看看