橙云网站建设/手机版百度入口
一个数组中有两种数出现了奇数次,其它数都出现了偶数次,怎么找到并打印这两种数
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//提取出最右侧的1int rightOne=eor&(~eor+1);int onlyOne=0;//eor'for(int i=0; i<arr.length; i++) {//与上一个不等于0的数并且结果不等于0,则这个数一定某个位上有1if((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);}
}
这个老哥也讲得很清楚:https://www.cnblogs.com/yzmarcus/p/16218235.html