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


Posted in PHP onOctober 14, 2018

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为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;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中通过ADO调用Asscess数据库和COM程序
Oct 09 PHP
PHP可变函数的使用详解
Jun 14 PHP
PHP生成自定义长度随机字符串的函数分享
May 04 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
PHP入门教程之图像处理技巧分析
Sep 11 PHP
php opendir()列出目录下所有文件的实例代码
Oct 02 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PHP获取ttf格式文件字体名的方法示例
Mar 06 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 PHP
php5.5使用PHPMailer-5.2发送邮件的完整步骤
Oct 14 #PHP
PHP中常见的密码处理方式和建议总结
Oct 14 #PHP
PHP如何根据文件头检测文件类型实例代码
Oct 14 #PHP
PHP5.0 TIDY_PARSE_FILE缓冲区溢出漏洞的解决方案
Oct 14 #PHP
PHP按一定比例压缩图片的方法
Oct 12 #PHP
PHP实现图片压缩
Sep 09 #PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 #PHP
You might like
PHP 实用代码收集
2010/01/22 PHP
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
php xhprof使用实例详解
2019/04/15 PHP
slice函数的用法 之不错的应用
2006/12/29 Javascript
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
JS无法捕获滚动条上的mouse up事件的原因猜想
2012/03/21 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
jquery easyui使用心得
2014/07/07 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
javascript判断网页是关闭还是刷新
2015/09/12 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
Bootstrap中点击按钮后变灰并显示加载中实例代码
2016/09/23 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[15:20]DOTA2-DPC中国联赛 正赛 Elephant vs Aster 选手采访
2021/03/11 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python3使用matplotlib绘制条形图
2020/03/25 Python
python3获取url文件大小示例代码
2019/09/18 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
浅谈Pycharm最有必要改的几个默认设置项
2020/02/14 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
大学自我评价
2014/02/12 职场文书
酒店员工检讨书
2014/02/18 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
毕业生找工作求职信
2014/08/05 职场文书
四风查摆问题自查报告
2014/10/10 职场文书
党员个人党性分析材料
2014/12/18 职场文书
高一军训口号
2015/12/25 职场文书
2019年第四季度财务部门工作计划
2019/11/02 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
2021/09/04 SQL Server
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫