美文网首页算法
算法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