数组中只出现一次的数字

数组中只出现一次的数字

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

相关推荐

点赞 评论 收藏
分享
Vincent777...:实习经历可以考虑放上去,对于软件使用方面可以细化一些,比如调整为:熟悉基于LSDYNA的瞬态动力学仿真分析,熟悉基于WORKBENCH的结构拓扑优化
我的简历长这样
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 11:35
程序员小白条:话太多,没实力和学历,差不多回答回答就行了,身份地位不一样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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