美文网首页
算法:重复N次的元素

算法:重复N次的元素

作者: 金星show | 来源:发表于2020-05-12 16:24 被阅读0次

    题目:在大小为2N的数组A中有N+1个不同的元素,其中有一个元素重复了N次。返回重复了N次的那个元素;(从题目中可以分析到只会存在一个重复的元素)

    示例:
    输入:【1,2,3,3】
    输出:3
    输入:【2,1,2,5,3,2】
    输出:2

    解法1---计数法

    $a = [2,1,2,5,3,2];
    
    foreach($a as $v) {
        if (!isset($tmp[$v])) {
            $tmp[$v] = 1;
        } else {
            echo $v;die();
        }
    }
    时间复杂度: O(N/2+1)
    

    解法2---距离法
    1234566666 1626364656 6126363656 。。。
    3123 3132 3312 。。。 最大距离为2
    不管如何排列,假定上述条件的基础上,重复元素之间的距离最大不会超过3,也就是最大距离为2;

    $a = [1,2,3,4,5,6,6,6,6,6];
    //$b = [3,1,2,3];
    
    for ($i=1;$i<=3;$i++) {
        for ($j=0;$j<count($a)-$i;$j++) {
            if ($a[$j] == $a[$j+$i]) {
                echo $a[$j];die();
            }
        }
    }
    时间复杂度: 3 * O(N)  一般常数会省略
    

    相关文章

      网友评论

          本文标题:算法:重复N次的元素

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