数组中只出现一次的数字

数组中只出现一次的数字

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;
        }
    }*/
    }
}
全部评论

相关推荐

11-11 14:21
西京学院 C++
Java抽象练习生:教育背景放最前面,不要耍小聪明
点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务