/**
* Created by lxw, liwei4939@126.com on 2017/11/2.
* 在其他数都出现偶数次的数组中找到出现奇数次的数
*/
public class oddTimesNum {
//整数数组arr,其中只有一个数出现奇数次,其他的数都出现偶数次,
// 打印这个数
public void printOddTimesNum1(int[] arr){
int eO =0;
for (int cur: arr){
eO = eO ^ cur;
}
System.out.println(eO);
}
//整数数组中,有两个数出现奇数次,其他数都出现偶数次,打印这两个数
public void printOddTimesNum2(int[] arr){
int eO = 0, eOhasOne = 0;
for (int cur:arr){
eO = eO ^ cur;
}
int rightOne = eO & (~eO + 1);
for (int cur:arr){
if((cur & rightOne) != 0){
eOhasOne = eOhasOne ^ cur;
}
}
System.out.println(eOhasOne + " " + (eO ^ eOhasOne));
}
public static void main(String[] args){
oddTimesNum tmp = new oddTimesNum();
int[] arr1 = new int[]{1, 1, 2, 2, 5};
tmp.printOddTimesNum1(arr1);
int[] arr2 = new int[]{1, 1, 2, 2, 3, 5};
tmp.printOddTimesNum2(arr2);
}
}
在其他数都出现偶数次的数组中找到出现奇数次的数
最新推荐文章于 2023-04-02 20:24:07 发布