加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php查找出数组中某个数字出现的次数超过数组长度的一半

发布时间:2020-05-25 22:47:45 所属栏目:PHP 来源:互联网
导读:本文章向大家介绍php查找出数组中某个数字出现的次数超过数组长度的一半,需要的朋友可以参考一下

数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,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

if arr[i]==e

count++

else

count--

if count==0

e=arr[i]

count=1

count=0

for i=0;i

if arr[i]==e

count++

if count*2>arr.length

return e

$arr=array(1,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;

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读