• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    php实现数组中出现次数超过一半的数字的统计方法

    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。

    两种方式:

    1、定义一个新数组arr,遍历数组给arr赋值,arr[元素]=出现的次数
    2.排序下arr,取第一个的key和value,key是目标元素,value是出现次数,验证下后返回
    3.时间复杂度是O(n) 空间上会新创建个数组

    1、定义变量e代表出现次数最多的元素,变量count用于判断出现次数用
    2.遍历数组,当前元素与e比较,相同的count++,不同的count--,count为0时当前元素覆盖e
    3.遍历数组验证e所出现的次数有没有超过一半
    4.时间复杂度O(n) 空间复杂度O(n)

    e,count=1
    
    for i=1;iarr.length;i++
    
      if arr[i]==e
    
        count++
    
      else
    
        count--
    
      if count==0
    
        e=arr[i]
    
        count=1
    
    count=0
    
    for i=0;iarr.length;i++
    
      if arr[i]==e
    
        count++
    
    if count*2>arr.length
    
      return e
    ?php
    
    $arr=array(1,2,3,2,2,2,5,4,2);
    
    $e=MoreThanHalfNum_Solution($arr);
    
    var_dump($e);
    
     
    
    function MoreThanHalfNum_Solution($numbers){
    
        $arr=$numbers;
    
        $e=$arr[0];
    
        $count=1;
    
        $length=count($arr);
    
        for($i=1;$i$length;$i++){
    
            if($arr[$i]==$e){
    
                $count++;
    
            }else{
    
                $count--;
    
            }  
    
     
    
            if($count==0){
    
                $e=$arr[$i];
    
                $count=1;
    
            }  
    
        }  
    
        $count=0;
    
        for($i=0;$i$length;$i++){
    
            if($arr[$i]==$e){
    
                $count++;
    
            }  
    
        }  
    
        if($count*2>$length){
    
            return $e; 
    
        }  
    
        return 0;
    
     
    
    }

    以上就是本次的全部内容和代码,感谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • PHP重置数组为连续数字索引的几种方式总结
    • PHP实现统计一个数字在排序数组中出现次数的方法
    • PHP简单实现合并2个数字键数组值的方法
    • php恢复数组的key为数字序列的方法
    • php提取数字拼接数组的具体操作
    上一篇:php5.5使用PHPMailer-5.2发送邮件的完整步骤
    下一篇:ThinkPHP中获取指定日期后工作日的具体日期方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    php实现数组中出现次数超过一半的数字的统计方法 php,实现,数组,中,出现,次数,