le__lee的专栏

所学,所想

如何找出数组中只出现一次的数字

笔试面试宝典中的一个题目
问题描述:一个数组里除了一个数字之外,其他数字都出现了两。找出这个只出现一次的数字。时间复杂度为O(n),空间复杂度为O(1)。
用异或运算的性质:任何数字异或自己都等于0,数字与0异或结果为数字本身。异或的交换律。

public class Test {
    public static int findNotDouble(int []arr){
        int tmp = arr[0];
        for(int i = 1; i<arr.length; i++){
            tmp ^= arr[i];
        }
        return tmp;
    }
    public static void main(String[] args) {
        int []arr = {1,2,3,5,5,3,2,1,6};
        int result = findNotDouble(arr);
        System.out.println(result);
    }
}

如果题目改为数组A中,一个整型数组除了一个数字以外,其他数字都出现了3次,那么如何找到这个数?

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/le__lee/article/details/51542824
个人分类: 笔试面试
想对作者说点什么? 我来说一句

找出出现一次数字

2015年08月19日 1KB 下载

没有更多推荐了,返回首页

不良信息举报

如何找出数组中只出现一次的数字

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭