题目描述
思路分析
代码实现
package class01;/*** @创建人 wdl* @创建时间 2021/4/10* @描述*/
public class num1ornum2 {public static void main(String[] args) {int arr1[]={1,2,2,2,1,3,3};printOddTimesNum1(arr1);int arr2[]={1,2,2,2,1,3,3,5};printOddTimesNum2(arr2);}public static void printOddTimesNum1(int[] arr){//只有一个数出现了奇数次int eor=0;for(int cur:arr){eor^=cur;}System.out.println(eor);}public static void printOddTimesNum2(int[] arr){//只有两个数出现了奇数次int eor=0;for(int cur:arr){eor^=cur;}//eor=a^b//eor!=0//eor必然有一个位置上是1int rightOne=eor&(~eor+1);//提取出最右的1int onlyOne=0;//eor'for(int cur:arr){if((cur&rightOne)==1){onlyOne^=cur;}}System.out.println(onlyOne+" "+(eor^onlyOne));}}