数组中只出现一次的数字
数组中只出现一次的数字
http://www.nowcoder.com/questionTerminal/e02fdb54d7524710a7d664d082bb7811
//num1,num2分别为长度为1的数组。传出参数 //将num1[0],num2[0]设置为返回结果 import java.util.*; public class Solution { public void FindNumsAppearOnce(int [] array,int num1[] , int num2[]) { int index=1; int xor=0; for(int i=0;i<array.length;i++){ xor=xor^array[i]; } //找到第一位不同的位置 while((index & xor)==0) index = index << 1; int nums1=0,nums2=0; for(int i=0;i<array.length;i++){ if((array[i]&index)==0)nums1=nums1^array[i]; else nums2=nums2^array[i]; } num1[0]=nums1; num2[0]=nums2; //Hash Map 方法list remove 指定下标处的值,注意要同时缩减删除的下标,否则容易出错 /* if(array.length==0||array==null)return; else{ Map<Integer,Integer> map = new HashMap<Integer,Integer>(); for(int i=0;i<array.length;i++){ if(!map.containsKey(array[i])) map.put(array[i],1); else map.put(array[i],2); } boolean flag=true; for(int key:map.keySet()){ if(map.get(key)==1 && flag) { num1[0]=key; flag=false; } if(map.get(key)==1 && flag==false) num2[0]=key; } }*/ } }