说在前面
🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。
题目描述
给你一个由 正整数 组成的数组 nums
。
返回数组 nums
中所有具有 最大 频率的元素的 总频率 。
元素的 频率 是指该元素在数组中出现的次数。
示例 1:
输入: nums = [1,2,2,3,1,4] 输出: 4 解释: 元素 1 和 2 的频率为 2 ,是数组中的最大频率。 因此具有最大频率的元素在数组中的数量是 4 。
示例 2:
输入: nums = [1,2,3,4,5] 输出: 5 解释: 数组中的所有元素的频率都为 1 ,是最大频率。 因此具有最大频率的元素在数组中的数量是 5 。
提示:
1 <= nums.length <= 100
1 <= nums[i] <= 100
解题思路
使用哈希表统计每个数字在数组中出现的频次,记录出现频次最大的次数,最后在遍历一次哈希表,统计有多少个数组出现的频次出现的次数与最大次数相同即可。
AC代码
/** * @param {number[]} nums * @return {number} */ var maxFrequencyElements = function(nums) { let max = 0; const map = {}; for(const num of nums){ map[num] = (map[num] || 0) + 1; max = Math.max(max,map[num]); } let res = 0; for(const k in map){ if(map[k] === max) res += max; } return res; };
公众号
关注公众号『前端也能这么有趣
』,获取更多有趣内容。
说在后面
🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『
前端也能这么有趣
』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。