题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
https://www.nowcoder.com/practice/389fc1c3d3be4479a154f63f495abff8
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param array int整型一维数组
* @return int整型一维数组
*/
public int[] FindNumsAppearOnce1 (int[] array) {
List<Integer> tmp=new ArrayList<>();
for(int cur=0;cur<array.length;cur++){
if(tmp.contains(array[cur])){
tmp.remove(Integer.valueOf(array[cur]));
}else{
tmp.add(array[cur]);
}
}
int[] rst=new int[2];
rst[0]=Math.min(tmp.get(0),tmp.get(1));
rst[1]=Math.max(tmp.get(0),tmp.get(1));
return rst;
// write code here
}
public int[] FindNumsAppearOnce (int[] array) {
int[] rst=new int[2];
int compare=1;
int tag=0;
for(int cur=0;cur<array.length;cur++){
tag^=array[cur];
}
while((tag & compare)==0){
compare<<=1;
}
int a=0;
int b=0;
for(int cur=0;cur<array.length;cur++){
if((array[cur]&compare)==0){
a^=array[cur];
}else{
b^=array[cur];
}
}
rst[0]=a>b?b:a;
rst[1]=a>b?a:b;
return rst;
}
}

