扣丁学堂PHP培训简述PHP实现数组中出现次数超过一半的数字的统计方法

2019-07-18 14:34:24 2200浏览

不知道PH配开发工程师们在工作中会不会遇到数组中有一个数字出现的次数超过数组长度的一半这种情况,当数组中有一个数字出现的次数超过数组长度的一半的时候那么我们需要找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。本篇文章扣丁学堂PHP培训小编就给读者们分享一下PHP实现数组中出现次数超过一半的数字的统计方法,感兴趣的小伙伴就随小编来了解一下吧。

扣丁学堂PHP培训简述PHP实现数组中出现次数超过一半的数字的统计方法


两种方式


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;i<arr.length;i++

  if arr[i]==e

    count++

  else

    count--

  if count==0

    e=arr[i]

    count=1

count=0

for i=0;i<arr.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培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的PHP讲师为您指导,此外扣丁学堂老师精心推出的PHP视频教程定能让你快速掌握PHP从入门到精通开发实战技能。扣丁学堂PHP技术交流群:374332265。


                        JavaEE/微服务/源码解析/分布式/企业级架构【VIP体验课】


     【关注微信公众号获取更多学习资料】       【扫码进入JavaEE/微服务VIP免费公开课】


  


查看更多关于“php培训资讯”的相关文章>>

标签: PHP培训 PHP视频教程 PHP在线视频 PHP学习视频 Laravel框架

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号