前端JavaScript多数元素的算法详解

 更新时间:2022年07月09日 08:53:34   作者:掘金安东尼  
这篇文章主要介绍了前端JavaScript多数元素的算法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目:多数元素

给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

  示例 1:

输入: nums = [3,2,3]
输出: 3

示例 2:

输入: nums = [2,2,1,1,1,2,2]
输出: 2

提示:

n == nums.length

1 <= n <= 5 * 104

-109 <= nums[i] <= 109

解:

方法一:map 实现

通过一遍map,将所有出现元素和他们出现的次数进行存储,因为map的唯一性,然后对其进行一次遍历,找出最大值,第一次map操作时间复杂度为o(1),第二次而o(n),所以总体加起来为O(n); 但是由于开辟了一个map空间,空间复杂度同样是o(n)

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function(nums) {
    let map = new Map()
    for(let i=0;i<nums.length;i++){
        if(map.has(nums[i])){
            map.set(nums[i],map.get(nums[i])+1)
        }else{
           map.set(nums[i],1)
        }
    }

    for(let [key,val] of map.entries()){
        if(val>nums.length/2){
            return key
        }
    }
};

方法二:排序

思路:排序数组,如果有一个数字出现的频率大于n/2,则在数组nums.length / 2的位置就是这个数

复杂度分析:时间复杂度:O(nlogn),快排的时间复杂度。空间复杂度:O(logn),排序需要logn的空间复杂度

var majorityElement = function (nums) {
    nums.sort((a, b) => a - b);
    return nums[Math.floor(nums.length / 2)];
};

以上就是前端JavaScript多数元素的算法详解的详细内容,更多关于JavaScript多数元素算法的资料请关注脚本之家其它相关文章!

相关文章

  • JavaScript 对象详细整理总结

    JavaScript 对象详细整理总结

    这篇文章主要介绍了JavaScript 对象详细整理总结的相关资料,需要的朋友可以参考下
    2016-09-09
  • 微信小程序 地图定位简单实例

    微信小程序 地图定位简单实例

    这篇文章主要介绍了微信小程序 地图定位简单实例的相关资料,并附实例代码及实现效果图,需要的朋友可以参考下
    2016-10-10
  • 原型和原型链 prototype和proto的区别详情

    原型和原型链 prototype和proto的区别详情

    原型是function对象下的属性,它定义了构造函数的共同祖先,也就是一个父子级的关系,子对象会继承父对象的方法和属性,每个实例对象下都有__proto__属性,通过属性__proto__指向构造函数的原型对象,当到达末端时,返回null,这样一层一层向顶端查找,就形成了原型链
    2021-10-10
  • tree shaking对打包体积优化及作用

    tree shaking对打包体积优化及作用

    这篇文章主要为大家介绍了tree shaking对打包体积优化及作用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 利用js实现简单开关灯代码

    利用js实现简单开关灯代码

    这篇文章主要分享的是如何利用js实现简单开关灯代码,下面文字围绕js实现简单开关灯的相关资料展开具体内容,需要的朋友可以参考以下,希望对大家又所帮助
    2021-11-11
  • 微信小程序 空白页重定向解决办法

    微信小程序 空白页重定向解决办法

    这篇文章主要介绍了微信小程序 空白页重定向解决办法的相关资料,需要的朋友可以参考下
    2017-06-06
  • 微信小程序 扎金花简单实例

    微信小程序 扎金花简单实例

    这篇文章主要介绍了微信小程序 扎金花简单实例的相关资料,需要的朋友可以参考下
    2017-02-02
  • Vuex的API文档说明详解

    Vuex的API文档说明详解

    本文将详细介绍Vuex的API文档,需要的朋友可以参考下
    2020-02-02
  • JavaScript 条件判断使用技巧详解

    JavaScript 条件判断使用技巧详解

    这篇文章主要为大家介绍了JavaScript 条件判断使用技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 微信小程序之网络请求简单封装实例详解

    微信小程序之网络请求简单封装实例详解

    这篇文章主要介绍了微信小程序之网络请求简单封装实例详解的相关资料,需要的朋友可以参考下
    2017-06-06

最新评论