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

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

热门标签:神龙斗士电话机器人 合肥企业外呼系统线路 代理打电话机器人 萍乡商铺地图标注 企业400电话办理多少费用 电信外呼系统多少钱一个月 宿州正规外呼系统软件 太原400电话申请流程 桂阳公司如何做地图标注

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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实现数组中出现次数超过一半的数字的统计方法》,本文关键词  php,实现,数组,中,出现,次数,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《php实现数组中出现次数超过一半的数字的统计方法》相关的同类信息!
  • 本页收集关于php实现数组中出现次数超过一半的数字的统计方法的相关信息资讯供网民参考!
  • 推荐文章