zoukankan      html  css  js  c++  java
  • 刷题136. Single Number

    一、题目说明

    题目136. Single Number,给定一列非空整数,所有数字都出现2次,只有1个数字只出现1次,找到这个数字。

    二、我的解答

    这个题目,最简单的做法是排序,然后查找即可。在此,我们用unordered_map<int,int> dp;统计数量,然后找到数量是1的。

    class Solution{
    	public:
    		int singleNumber(vector<int>& nums){
                if(nums.size()<1) return 0;
                if(nums.size()==1) return nums[0];
    			unordered_map<int,int> dp;
    			for(int i=0;i<nums.size();i++){
    				dp[nums[i]] ++;
    			}
    			for(int i=0;i<nums.size();i++){
    				if(dp[nums[i]]<2) return nums[i];
    			}
                return 0;
    		}
    };
    

    性能如下:

    Runtime: 24 ms, faster than 27.29% of C++ online submissions for Single Number.
    Memory Usage: 11.6 MB, less than 20.99% of C++ online submissions for Single Number.
    

    三、优化措施

    上面是遍历2次,可以优化为遍历1次:

    class Solution{
    	public:
    		int singleNumber(vector<int>& nums){
                if(nums.size()<1) return 0;
                if(nums.size()==1) return nums[0];
    			unordered_map<int,int> dp;
    			for(int i=0;i<nums.size();i++){
    				dp[nums[i]] ++;
    				if(dp[nums[i]]==2) dp.erase(nums[i]);
    			}
    			unordered_map<int,int>::iterator iter = dp.begin();
    			return iter->first;
    		}
    };
    

    不使用额外的空间:

    class Solution{
    	public:
    	    //异或操作
    		int singleNumber(vector<int>& nums){
                int n = 0;
                for(int i=0;i<nums.size();i++){
                	n = n xor nums[i];
    			}
    			return n;
    		}
    };
    
    Runtime: 12 ms, faster than 95.18% of C++ online submissions for Single Number.
    Memory Usage: 9.7 MB, less than 95.06% of C++ online submissions for Single Number.
    
    所有文章,坚持原创。如有转载,敬请标注出处。
  • 相关阅读:
    python中os模块和sys模块的常见用法
    Python 十进制转换为二进制 高位补零
    Invalid prop: custom validator check failed for prop "pagerCount"的报错
    Centos7 安装使用virtualenvwrapper
    如何使用CORS解决跨域问题
    内置模块
    文件操作的相关
    小数据池的概念
    set()集合的概念与一般操作
    有关于dict(字典)的特性与操作方法
  • 原文地址:https://www.cnblogs.com/siweihz/p/12269789.html
Copyright © 2011-2022 走看看