主页 > 知识库 > php实现数组中出现次数超过一半的数字的统计方法

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

热门标签:科大讯飞语音识别系统 银行业务 Mysql连接数设置 Linux服务器 电子围栏 服务器配置 团购网站 阿里云

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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提取数字拼接数组的具体操作

标签:大理 蚌埠 萍乡 广元 衢州 衡水 江苏 枣庄

巨人网络通讯声明:本文标题《php实现数组中出现次数超过一半的数字的统计方法》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266