找出重复的数字
题目
一组无序的自然数集合,由0,1,2... ...,n的数字和一个的数字X(X>=0 && X<=n)组成,请从集合中找出这个重复数字X。
解题思想
使用异或的特性:0^任意数=任意数,任意数^任意数=0,异或计算的无序性(即1^2^3 = 2^3^1)
import java.util.*;
public class Main {
public static void main(String[] args) {
//System.out.println("请输入数字:");
Scanner sc = new Scanner(System.in);
ArrayList<Integer> arr = new ArrayList<Integer>();
while(sc.hasNext())
{
arr.add(sc.nextInt());
}
//System.out.println(arr);
int x = 0;
for(int i = 0; i < arr.size()-1; i++){
x ^= i;
}
for(int i = 0; i < arr.size(); i++){
x ^= arr.get(i);
}
System.out.print(x);
}
} 
京公网安备 11010502036488号