先对数组进行排序,然后定义两个指针变量q和p,初始化:q = 0,p = q + 1;
对数组进行while循环遍历,当p和q所指的元素相等时,两个指针变量一次移动两步,当p和q所指的元素不相等时,q所指的就一定是那个出现一次的变量,然后此时这两个指针变量改为移动一步,当q所指的位置是元素末尾而p已经是超出数组范围时,此时q所指的元素也是一次出现的。
public int[] FindNumsAppearOnce (int[] array) {
// write code here
if(array == null){
return null;
}
Arrays.sort(array);
int q = 0;
int p = q + 1;
int[] res = new int[2];
int i = 0;
while (p < array.length){
if (array[p] == array[q]){
p = p + 2;
q = q + 2;
}else {
res[i++] = array[q];
p = p + 1;
q = q + 1;
}
if (p == array.length && q == array.length - 1){
res[i] = array[q];
}
}
return res;
}
京公网安备 11010502036488号