方法一
暴力
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t=in.nextInt(); while(t-->0){ int n=in.nextInt(); int[] a=new int[n]; for(int i=0;i<n;i++){ a[i]=in.nextInt(); } for(int i=0;i<n;i++){ int xor=a[i]; for(int j=0;j<n;j++){ xor=xor^a[j]; } //如果异或为0,说明是的,如果有偶数个x,那么异或和为x if(xor==0||xor==a[i]){ System.out.println(a[i]); break; } } } } }
方法二
设为x 原数组为a b c d e
因为a^b^c^d^e=x
所以新数组相异或为a^b^c^d^e^x=x^x=0
假设a为x,那么需要证明b^c^d^e^x=a
因为a^(b^c^d^e^x)=a^a=0符合,证明成功
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t=in.nextInt(); while(t-->0){ int n=in.nextInt(); int[] a=new int[n]; for(int i=0;i<n;i++){ a[i]=in.nextInt(); if(i==0){ System.out.println(a[i]); } } } } }