求数组中唯一重复的值

求数组中唯一重复的值

我们以数组值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);
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值