#面试题 找出数组中的唯一值
数组中仅有一个元素出现了一次, 其他元素均出现了两次, 找出其中的唯一值,如数组: [3 4 5 2 3 4 5], 2只出现了一次,即要找出2.
解法1(sort):
/**
* 算法1
* 1. 先排序
* 2. 若a[i+1]!=a[i] (i为偶数)或a[i+1]不存在 则a[i]为唯一元素
*
* [3 4 5 2 3 4 5]
* [2 3 3 4 4 5 5]
* a[1]!=a[0] ==> a[0]为唯一元素
*
* [3 4 5 2 2 4 5]
* [2 2 3 4 4 5 5]
* a[3]!=a[2] ==> a[2]为唯一元素
* [3 4 5 2 2 4 3]
* [2 2 3 3 4 4 5]
* a[7]不存在 ==> a[6]为唯一元素
* @param a
*/
public static int findUniqueValue1(final int[] a){
int[] b = a.clone();
Arrays.sort(b);
int result = -1;
for (int i = 0; i
if(i+1==b.length || b[i+1]!=b[i]){
result = b[i];
break;
}
}
return result;
}