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

ITxuexi_66 · · 1537 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

不知道PH配开发工程师们在工作中会不会遇到数组中有一个数字出现的次数超过数组长度的一半这种情况,当数组中有一个数字出现的次数超过数组长度的一半的时候那么我们需要找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。本篇文章扣丁学堂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从入门到精通开发实战技能。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1537 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传