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

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

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

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);
  }
}
相关文章
|
C语言
C 语言实例 - 判断三个数中的最大数
C 语言实例 - 判断三个数中的最大数。
162 36
|
8月前
给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个 给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一
给定 n 个整数,求里面出现次数最多的数,如果有多个重复出现的数,求值最大的那个 给定n个整数,求里面出现次数最多的数,如果有多个重复出现的数,求出值最大的一
|
Go
怎样判断一个数是否为偶数
怎样判断一个数是否为偶数
116 0
|
8月前
【调整奇数偶数顺序】调整数组使奇数全部都位于偶数前面习题集讲解
【调整奇数偶数顺序】调整数组使奇数全部都位于偶数前面习题集讲解
69 1
遇7避过(输出1~100内的安全数,安全数不能带有7,不能被7整除
遇7避过(输出1~100内的安全数,安全数不能带有7,不能被7整除
76 0
判断数的奇偶性
判断数的奇偶性
104 0
05a for循环实践-查找水仙花数
水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。
104 0
|
人工智能
【scanf】将一串整数,依次左移一个数,且原来的第一个数移到最后,原来多执行的一步在这里!
【scanf】将一串整数,依次左移一个数,且原来的第一个数移到最后,原来多执行的一步在这里!
92 0
【scanf】将一串整数,依次左移一个数,且原来的第一个数移到最后,原来多执行的一步在这里!
|
算法 前端开发
【脚趾 Offer 21 】调整数组顺序使奇数位于偶数前面
【脚趾 Offer 21 】调整数组顺序使奇数位于偶数前面
111 0
AcWing 32. 调整数组顺序使奇数位于偶数前面
AcWing 32. 调整数组顺序使奇数位于偶数前面
83 0
AcWing 32. 调整数组顺序使奇数位于偶数前面