数组中只出现一次的数字 -- 尝试下set,以及异或^

原创 2016年05月31日 11:03:53


数组中只出现一次的数字

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。
class Solution {
public:
    void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
        if(data.size()==1){*num1 = 0;*num2 =0;return;}
		set<int> temp;
        set<int>::iterator it;
        for(int i : data){
            
            it=temp.find(i);    //查找键值为5的元素
            if(it!=temp.end())    //找到
                temp.erase(i);
            else            //未找到
                temp.insert(i);
        }
        for(int i : temp){
            *num2 = *num1;
            *num1 = i;
        }
    }
};

class Solution {
public:
    void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {
        if(data.size()<2) return;
        int temp=0;
        for(auto i : data){
            temp = temp ^ i;
        }
        int fenzu = 1;
        while(!(temp&fenzu)){
            fenzu = fenzu << 1;
        }
        int temp2=0;
        for(auto i : data){
            if(i&fenzu)
                temp2 = temp2^i;
        }
        *num1 = temp2;
        *num2 = temp^temp2;
    }
};



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

(经典的异或技巧)数组中只出现一次的数字 (两种方法)

数组中只出现一次的数字 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 方法一: 采用异或运算 (算是标准的思路吧) 思路: 此题考察...

码农小汪剑指Offer之38-数组中只出现一次的数字 异或运算的运用

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路这道题,看上去没啥的,其实真实的很难,如果你从未接触过,一般情况下多数都是无法搞定这个问题的...

异或运算的经典算法题:找出数组中只出现一次的数字,其它数字都出现了两次

转载自:http://blog.csdn.net/u011826264/article/details/39269101 题目:一个整型数组里除了一个数字之外,其它的数字都出现了两次。请写程序找...

用异或实现查找只出现一次的数字

一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,请找出这两个数字。

百度面试题之找出数组中之出现一次的两个数(异或的巧妙应用)

// 百度面试题 //数组中除两个数字外,其它数字都出现了次。要求尽可能快的找出这两个数字 #include using namespace std; void FindTwoN...

程序员面试宝典(34)-找出数组中两个只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:首先我们考虑这个问题的一个简单版本:一个数组里除...

九度OJ 1351:数组中只出现一次的数字 (位运算)

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:3098 解决:906 题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这...

算法题6 找出整数数组中两个只出现一次的数字

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:这是一道很新颖的关于位运算的面试题。首先我们考虑...
  • wcyoot
  • wcyoot
  • 2011-05-17 12:13
  • 1499

程序员面试题精选100题(34)-数组中只出现一次的数字[算法]

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 分析:这是一道很新颖的关于位运算的面试题。 首先我们...

剑指offer面试题40-数组中只出现一次的数字

题目: 一个整形数组里除了两个数字意外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 要求时间复杂度是On,空间复杂度为O1 这个是上一篇 2016阿里巴巴java笔试题 的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)