数组中只出现一次的数字

数组中只出现一次的数字

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

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务