一个数组中有两种数出现了奇数次,其它数都出现了偶数次,怎么找到并打印这两种数
package com.harrison.Class01; public class Code08_TwoNumOddTimes { public static void printOddTimesNum(int[] arr) { int eor=0; for(int i=0; i<arr.length; i++) { eor^=arr[i]; } //eor==a^b && eor!=0 //提取出最右侧的1 int rightOne=eor&(~eor+1); int onlyOne=0;//eor' for(int i=0; i<arr.length; i++) { //与上一个不等于0的数并且结果不等于0,则这个数一定某个位上有1 if((arr[i]&rightOne)!=0) { onlyOne^=arr[i]; } } System.out.println(onlyOne+" "+(onlyOne^eor)); } public static void main(String[] args) { int[] arr= {4,3,4,9,4,3,2,2,1,4,9,1,3,2}; printOddTimesNum(arr); } }