美文网首页算法
算法3 找重复

算法3 找重复

作者: holmes000 | 来源:发表于2017-09-06 21:11 被阅读0次

    题目:有n+1个无序数字,取值范围1-n,找出唯一一个重复出现的数字。限制条件:可以用于加载数据的内存只有n/8字节。(n为整数)
    思路:1+n个数,数的取值范围是从1到n的整数,其中只有一个数重复,说明有n个值,将所有数加和减去n*(n-1)/2即为重复的值。
    代码

    public int findRepeat(int[] a) {
        int sum = 0;
        for (int i = 0; i < a.length; i++) {
            sum += a[i];
        }
        int nsum=(a.length-1) * (a.length)/2;
        int  s = sum - nsum;
        return s;
    }
    

    或者用异或运算

    相关文章

      网友评论

        本文标题:算法3 找重复

        本文链接:https://www.haomeiwen.com/subject/mxgvjxtx.html