javascript - 给定一个整数列表,找出列表中出现频率最高的整数
问题描述
我最近在一次采访中提出了这个问题。给定一个整数列表,找到列表中出现频率最高的整数并返回一个数组。我能够回答,但其中一个测试用例让我失望了。
我被困在应该使用哪种排序方法来对数组进行排序以获得最常见的整数并返回数组中包含最常见整数的所有项目。
const arr = [1,1,2,3,3,3,3,4,5,5,10]; // return 3
const mostCommon = (arr) => {
if (arr.length < 1 ) {
return null;
}
const map = {};
let mostFrequentNum = arr[0];
for (let i = 0; i < arr.length; i++) {
let currentNum = arr[i];
!map[currentNum] ? map[currentNum] = 1 : ++map[currentNum];
// 1. Current has higher count than known max
if(map[currentNum] > map[mostFrequentNum]) {
mostFrequentNum = currentNum;
}
}
return mostFrequentNum;
};
mostCommon(arr); // return 3
/* confused how to implement test case below */
// const arr = [5, 99, 3994813, 99, -32, 43, 99, 3994813, 3994813];
// return [ 99, 3994813 ]
解决方案
我只有 1 个解决方案;)
const arr = [1,1,2,3,3,3,3,4,5,5,10];
var
counting = {},
most_Freq = arr[0]
;
arr.forEach( x=>{ counting[x] = (counting[x] || 0)+1; });
most_Freq = Object.keys(counting).reduce((a, b) => counting[a] > counting[b] ? a : b);
console.log ( 'most frequent is ', most_Freq )
推荐阅读
- sql-server - 将 Logstash 连接到 SQL Server
- magento2 - Magento 2 Override Magento Checkout Model Cart updateItems 功能
- javascript - Node JS:只允许服务器端调用我的 api
- vba - VBA:根据单元格值将Excel行移动和删除到其他工作表
- networking - 接受与 UdpSocket 的连接时如何获取目标 IP?
- google-apps-script - 使用 Google Apps 脚本在电子邮件详细信息中看不到密件抄送标签
- android - 如何为 Android Api Level 19 及更高版本创建渐变?
- neural-network - 我的 keras 模型中的裁剪层的维度为零
- sql - 如何在 MS sql server 的列中查找和删除字母
- c# - 为什么使用 Identity Server 和 asp.net core 2 在基于令牌的身份验证上使用 cookie