看这篇前先看看上一题-玩转位运算-经典例题1
题目描述
找出落单的数
有1001个数被存放在数组中,其中有500对数字是相等的,只有一个数是落单的,请你找出这个数
用到的方法和上一道题一模一样,甚至思路还要更简单,话不多所,直接上代码
public class testdemo {
public static void main(String[] args) {
int[] a = testArry();
//输出这个数组
for(int i=0;i<1001;i++){
System.out.print(a[i]+" ");
}
System.out.println();
int result=0;//存储最终结果
for(int i=0;i<1001;i++){
result=result^a[i];
}
System.out.println(result);
}
/*
首先创建一个方法用来生成一个符合题目要求的数组
这部分可以不看,只看主方法
*/
public static int[] testArry() {
int[] a = new int[1002];
int i = 0;
//把1~501存储俩遍
for (i = 0; i <= 500; i++) {
a[i] = i + 1;
}
for (i = 501; i < 1002; i++) {
a[i] = i -500;
}
//随机去掉一个数
Random rd=new Random();
int temp= rd.nextInt(1002);
int[] x=new int[1001];
int j=0;
for(i=0;i<1002&&j<1001;){
if(i!=temp){
x[j]=a[i];
i++;
j++;
}else{
i++;
}
}
return x;
}
}