求数组中唯一重复的值
我们以数组值a为例
int a[]={0,1,2,3,4,5,6,7,8,9,5}//数字5重读
求数组中唯一重复的值,我们有很多的方法:
1. 第一种:
既然是求0~9中唯一重复的数字,可以用数组a的所有值相加,在减去0+1+2+……9的值就是唯一重复的值
2. 第二种:
定义一个长度与a相同的数组,循环一遍,只要数组a有的数字,数组w就更新一次。
最后只要求出数组w那个位置的值是2那么也就求出了唯一重复的值。
import java.util.*;
public class Text1 {
public static void main(String[] args) {
int[]a= {1,2,3,4,5,6,7,8,9,0,5};
int[]w=new int[a.length];
for(int j=0;j<a.length;j++) {
w[a[j]]++;
}
for(int v=0;v<w.length;v++) {
if(w[v]>1) {
System.out.println(v);
}
}
}
}
3. 第三种:
这种方法不需要多定义数组空间,利用^(异或)算法解决
首先要了解异或的规则:
x与0异或等于x
x与x异或等于0
数组中只有一个数字是重复的那么我们利用上面异或的规则
已知数组a中(0~9)有x出现2次,其他数字均出现1次
那么我们让其他数字出现2次,x出现3次的时候做异或运算
最后剩下的就是唯一重复的x的值了!
import java.util.*;
public class Text2{
public static void main(String[] args) {
int[]a= {1,2,3,4,5,6,7,8,9,0,7};
int x=0;
for(int i=0;i<a.length;i++) {
x^=a[i];
}
for(int j=0;j<=9;j++) {
x^=j;
}
System.out.println(x);
}
}