题解 | #数组中只出现一次的两个数字#
数组中只出现一次的两个数字
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; } }