问题描述:
一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字,编程实现。
问题思路:
(1)先将数组元素整体异或;
(2)将异或结果从最低位找第一个出现的1;
(3)遍历数组将其分为A、B组;
(4)对A、B组分别进行异或。
#include<stdio.h>
#include<windows.h>
#include<assert.h>
void findTwoNumber(int *arr, int sz)
{
assert(arr);
assert(sz > 0);
int n = arr[0];//数组异或最好不要引入新变量,因不知道最终结果是引入量还是最终结果,容易有歧义,故推荐直接将结果初始化为数组元素,一般为首元素
int i