给定一个大小为n的数组,找到其中的众数。众数是指在数组中出现次数大于[n/2]的元素。

本文介绍了两种在JavaScript中寻找数组众数的方法。方法一是通过排序找到出现次数超过一半的元素;方法二是遍历数组,比较并计数,最终找出出现次数大于n/2的元素。若不存在这样的元素,则表示没有众数。
摘要由CSDN通过智能技术生成

方法一:

设计思路:给数组排序,由于众数出现次数大于n/2,所以第n/2个元素就是众数。

function mostNum(arr){
        var arr2 = arr.sort((a,b)=>{return b-a;});
        var zhong = arr[parseInt(arr.length/2)];
        return zhong;
    }

方法二:

设计思路:给定一个数组[32,34,32,12,78,32]

用第一个元素跟之后的所有元素比较,如果两个元素相等,计时器count+1,并删除这个相同元素。比较完成后,把count追加到result中。

这样第二个元素就一定跟第一个元素不相等,计数器归1,用第二元素跟之后元素相比,重复上个步骤。

最后数组arr剩余的元素均不重复。

result中的元素跟arr中的元素一一对应,result元素就是arr中对应元素出现的次数。俩数组长度相同。result中大于n/2的就是众数出现次数,它的index就是arr中众数的index。如果没有就是没有众数。

function mostNum(arr){
        var halfArr = arr.length/2;//获取数组长度的二分之一
        var result=[];//用来存放arr元素出现次数
        console.log('数组长度为:'+arr.length);//打印arr长度
        for(j=0;j<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值