勤添加括号,避免犯运算符号优先级问题: if ((nums[i] & dif) != 0) 对 if (nums[i] & dif != 0) 错
给定一组数字,其中只有一种数字出现奇数次,其余均出现偶数次,找出出现奇数次的这个数
给定一组数字,其中只有两种数字出现奇数次,其余均出现偶数次,找出出现奇数次的这两个数
#include<iostream>usingnamespace std;//设计一个函数,实现:给定一组数字,其中只有一种数字出现奇数次,其余均出现偶数次,找出出现奇数次的这个数voidFindOne(int nums[],int len,int&x){
x =0;for(int i =0; i < len; i++)
x ^= nums[i];}//设计一个函数,实现:给定一组数字,其中只有两种数字出现奇数次,其余均出现偶数次,找出出现奇数次的这两个数voidFindTwo(int nums[],int len,int&x,int&y){
int x_eor_y =0;for(int i =0; i < len; i++)
x_eor_y ^= nums[i];//提取x_eor_y右数第一个1int dif = x_eor_y &(~x_eor_y +1);//初始化x=0
x =0;for(int i =0; i < len; i++){
if((nums[i]& dif)!=0)
x ^= nums[i];}
y = x_eor_y ^ x;}intmain(){
int nums1[]={
2,1,1,3,4,3,4,2,2};//2出现奇数次int len1 =(sizeof(nums1)/sizeof(nums1[0]));int test1_x;FindOne(nums1,len1,test1_x)