• 主元素


    给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。

    注意事项

    数组中只有唯一的主元素

    样例

    给出数组[1,2,1,2,1,3,3] 返回 1

    挑战

    要求时间复杂度为O(n),空间复杂度为O(1)。

    标签

    LintCode 版权所有 枚举法 贪心 Zenefits

     1 <?php
     2 /**
     3  * 主元素
     4  * 给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一
     5  */
     6 
     7 /**
     8  * 核心思想:一个大小为n的数组中存在一个元素的个数>n/2,则如果用这个数组中的其他的数和该主元素进行抵消的话,最后剩下的一定是主元素,因为主元素的个数最多
     9  * 1.假设数组中第一个元素a(1)为主元素,设count = 1;
    10  * 2.声明一个常量size等于数组的大小;
    11  * 3.a(1)和a(2)相比,相等count++;否则count--; 然后继续比较a(3),以此类推。
    12  * 4.当与a(n)比较后,count = 0时,重新假设a(n+1)为主元素,并继续与a(n+2)作比较。
    13  * 5.当count >= (size-m)/2时,此时假设的主元素a(m)即为实际的主元素。或者遍历完整个数组后,当前假设的主元素为实际主元素。
    14  */
    15 function host_element($data)
    16 {
    17     if(empty($data))
    18     {
    19         return false;
    20     }
    21     $tmp = $data[0];//假设第一个元素为主元素
    22     $count = 1;
    23     $size = count($data);
    24     for($i=1; $i<$size; ++$i)
    25     {
    26         if(0 == $count)
    27         {
    28             $tmp = $data[$i];
    29         }
    30         if($tmp == $data[$i])
    31         {
    32             $count++;
    33         } else {
    34             $count--;
    35         }
    36     }
    37     return $count > 0 ? $tmp : false;
    38 }
    39 
    40 $arr = [1, 1, 1, 1, 2, 2, 2];
    41 $res = host_element($arr);//返回false或者主元素的值
    42 var_dump($res);
  • 相关阅读:
    PS学习之餐饮行业修图
    python的IDE选择
    python简介与安装
    selenium不能启动firefox浏览器,怎么办?
    selenium定位元素(python)
    如何解决Selenium IDE与Firefox的不兼容问题?
    手工测试的关注点之用户管理
    《Google 测试之道》有感(一)
    LR性能测试衡量指标
    LR集合点与事务
  • 原文地址:https://www.cnblogs.com/573583868wuy/p/8763959.html
Copyright © 2020-2023  润新知