您现在的位置是:网站首页> 编程资料编程资料

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

2023-05-24 513人已围观

简介 前端JavaScript多数元素的算法详解_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;inums.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多数元素算法的资料请关注其它相关文章!

-六神源码网