zoukankan      html  css  js  c++  java
  • leetcode 137 Single Number II

    题意:类似之前的有一道题,这次是一个数组中所有数字都出现三次,唯独有一个不是,找出这个数字。

    思路:懵了,按位异或对出现两次可以很好的解决问题,但是三次就直接废了。想半天没办法,看到讨论区里别人的一个解法超级简单,就是用set存一下这个数组,都变成了只出现一次的数字,整体求和乘3,减去原数组的和乘3的结果,剩下的就是我们要找的那个数的两倍了,除2得出结果。

    但是我并不想这么简单的搞定这个问题,通过他的方法给我的启发就是再次利用起set这个容器,我发现set有一个count的函数,是用来统计容器中某个数字出现的次数,但是搞笑的是set的特点是让每个数字只出现一次。然而,转机来了,set有个好兄弟叫multiset,这个容器跟set几乎一样只是它允许数字出现多次,同时也有count这个函数,问题解决。

    代码

    int singleNumber(vector<int>& nums) 
    {
        multiset<int> s(nums.begin(),nums.end());
        multiset<int>::iterator i;
        for(i = s.begin();i!=s.end();i++)
        {
            if(s.count(*i)!=3)
            {
                return *i;
                break;
            }
        }
    }
  • 相关阅读:
    移动端轮播图
    移动端的注册页面
    点击显示或者消失的效果(手风琴效果)
    canvas的一些简单绘制方法
    用canvas来手动绘画
    canvas标签的运用
    Html5新标签解释及用法
    最近的心得
    浅谈正则表达式
    P3197 [HNOI2008]越狱
  • 原文地址:https://www.cnblogs.com/puyangsky/p/4646816.html
Copyright © 2011-2022 走看看