思路:
针对这个题,我想到两种方法
一、通过异或^运算 a^a=0,0^b=b (任何数值异或它本身等于0,0异或任何数值都等于数值本身)
class Test {
public static void main(String[] args) {
int[] arr = {1, 1, 3, 4, 4};
Integer method = method(arr);
}
public static Integer method(int[] arr) {
if (Objects.isNull(arr) || arr.length <= 0) {
return null;
}
Integer result = null;
for (int i = 0; i < arr.length; i++) {
result ^= arr[i];
}
return result;
}
}
二、通过两层循环,循环第一层拿第一层的一个数值和第二层所有的数值进行比较,记录和第二层相同数值出现的次数,如果这个数值的记录数出现两次,就结束本次循环。在第二次循环外,比对第二次循环是否和数值长度相等,如果不相等说明这个数值没有和第二次循环的所有数值比较完,反之,这个数值只出现一次。
class Test {
public static void main(String[] args) {
int[] arr = {1, 1, 3, 4, 4};
Integer show = show(arr);
System.out.println("show = " + show);
}
public static Integer show(int[] arr) {
if (Objects.isNull(arr) || arr.length <= 0) {
return null;
}
for (int i = 0; i < arr.length; i++) {
int j = 0;
int count = 0;
for (j = 0; j < arr.length; j++) {
if (arr[i] == arr[j]) {
count++;
}
if (count==2){
break;
}
}
if (j==arr.length) {
return arr[i];
}
}
return null;
}
}