剑指offer:数组中只出现一次的数字

来源:互联网 发布:药品查询真伪软件 编辑:程序博客网 时间:2024/05/29 08:35

题目描述

一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

class Solution {public:    void FindNumsAppearOnce(vector<int> data, int* num1, int *num2) {        int len = data.size();        if (len < 2){            return;        }        int OR=data[0];        for (int i = 1; i < len; i++){            OR ^= data[i];        }        int bitOneIndex;        for (int i = 0;; i++){            if (OR & (1 << i)){                bitOneIndex = i;                break;            }        }        *num1 = 0, *num2 = 0;        for (int i = 0; i < len; i++){            if (data[i] & (1 << bitOneIndex)){                *num1 ^= data[i];            }            else{                *num2 ^= data[i];            }        }    }};
0 0
原创粉丝点击