一个数组中有两种数出现了奇数次,其它数都出现了偶数次,怎么找到并打印这两种数

简介: 一个数组中有两种数出现了奇数次,其它数都出现了偶数次,怎么找到并打印这两种数

一个数组中有两种数出现了奇数次,其它数都出现了偶数次,怎么找到并打印这两种数

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);
  }
}
相关文章
|
7月前
给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个 给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一
给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个 给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一
输入一个数判断是奇数还是偶数,并输出结果
输入一个数判断是奇数还是偶数,并输出结果
|
2月前
循环输出指定区间范围的偶数
【10月更文挑战第14天】循环输出指定区间范围的偶数。
41 3
|
7月前
2.任意输入三个数,求最大数
2.任意输入三个数,求最大数
39 0
|
Go
怎样判断一个数是否为偶数
怎样判断一个数是否为偶数
99 0
|
7月前
让用户依次输入三个整数,求出三个数中的最小值,并打印到控制台
让用户依次输入三个整数,求出三个数中的最小值,并打印到控制台
67 0
判断数的奇偶性
判断数的奇偶性
96 0
判断一个数是否是对称数(数组/非数组解法)
判断一个数是否是对称数(数组/非数组解法)
05a for循环实践-查找水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。
91 0
|
存储 算法
【题型总结】找到第n个自定义数 | 丑数系列 + 神奇数字
思路:对于对于任意一个丑数 x,其与任意的质因数(2、3、5)相乘,结果(2x、3x、5x)仍为丑数。因此可以使用优先队列(小根堆)存放丑数x,每次从队列取出最小值x,并将x所对应的2x、3x和5x入队。第n次出队的值即为第n个丑数
260 0
【题型总结】找到第n个自定义数 | 丑数系列 + 神奇数字