查找一个数组中出现次数最多的值(长度为1000)
来源:互联网 发布:移动互联网和大数据 编辑:程序博客网 时间:2024/05/17 05:09
今天有一道面试题就是这个问题,然后我自己的解决方法是这样的:
var findMost = function(arr){ let arrL=[],arrN=[],count=1; //定义两个数组 一个存出现次数 一个存出现的数 顺带定义一个初始出现次数1 for(const i of arr.keys()){ for(var j = i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ count++;//如果和后面的值相同 就将出现次数+1 arr.splice(arr[j],1);//删掉后面这个值相同的 j=j-1;//将j往前移一位 不然会出现少循环的问题 } } if(j==arr.length){ //判断j如果j==arr.length说明就是第二个循环完成了 这个时候就可以存储这个循环的值了 arrL.push(count); arrN.push(arr[i]); count = 1;//初始出现次数count } } console.log(arrL,arrN);//打印各个数出现的次数 //接下来判断arrL数组中最大的值了 maxL = arrL[0]; for(const i of arrL.keys()){ if(maxL<arrL[i]){ maxL = arrL[i]; } } console.log(maxL); const index = arrL.indexOf(maxL); const Most = arrN[index]; console.log("出现次数最多的值是:"+Most+";出现次数为:"+maxL); } findMost([1,2,3,4,5,2,2,34,4,5,322,3,4,54,34]);
然后面试官说我没考虑时间复杂度(其实我是不懂时间复杂度这个东西),然后他提示我和哈希表啥的思路,但是我还是不会,然后刚刚看了一下博客,发现了一个貌似感觉应该更简单的方法,不知道是不是面试官说的那种(其实我是真的菜鸟)
//hash啊 说个思路,定义一个对象obj,遍历数组, 对象的键为数组的元素,值为出现的次数。然后遍历这个对象,找出值为最大的那个。function findMost(arr) { if (!arr.length) return if (arr.length === 1) return 1 var res = {} // 遍历数组 for (var i=0,l=arr.length;i<l;i++) { if (!res[arr[i]]) { res[arr[i]] = 1 } else { res[arr[i]]++ } } // 遍历 res var keys = Object.keys(res) var maxNum = 0, maxEle for (var i=0,l = keys.length;i<l;i++) { if (res[keys[i]] > maxNum) { maxNum = res[keys[i]] maxEle = keys[i] } } return maxNum}
后面延伸问了一个判断两个对象是否相同,嗯,我不会,我当时只是跟他讲了一下思路,我好好理理。
阅读全文
0 0
- 查找一个数组中出现次数最多的值(长度为1000)
- Java查找一维数组中出现次数最多的值及其出现次数
- 问题七十三:已知一个从小到大的数组,求出该数组中出现次数最多为几次?
- 后缀自动机 重复旋律 6(长度为K的旋律中出现次数最多的旋律的出现次数)
- 以字符串中出现次数最多的字符的个数为权值,对一个字符串数组进行升序排序
- 统计一个无序数组中出现次数最多的元素
- 求一个数组中出现次数最多的数
- 求一个数组中出现次数最多的数
- 统计一个无序数组中出现次数最多的元素
- 找数组中出现次数最多的一个
- 【编程题】1000个(0-9)数字的数组中查找出现次数最多的3个数字,输出这3个数字和出现的次数。
- js统计一个字符串出现最多的字母(或者数组中出现次数最多的元素)
- 数组中出现次数最多的数字
- 判断一个数组或者一个字符串中出现次数最多的项及其次数
- 数组中出现次数最多的数及出现次数
- java找出一个数组中出现次数最多的那个元素(用HashSet很新颖)
- 寻找数组中出现次数最多的值
- 查找一个字符串中出现次处最多的那个字符,并输出出现次数
- 13.3、异常处理——DefaultHandlerExceptionResolver
- 使用python将csv文件数据可视化
- java语言程序设计 第十三章 (13.17、13.18)
- c语言:根据输入的分数,判断其所在的等级,使用switch语句
- 第二章习题
- 查找一个数组中出现次数最多的值(长度为1000)
- Java实现算法之Brackets Sequence问题
- java鬼混笔记:springboot之thymeleaf 1:简单的thymeleaf例子
- 设计模式之禅7
- android客户端从服务器端获取json数据并解析的实现代码
- HHUOJ_1331: 时钟
- sublime Text SFTP使用密钥远程登录Linux 上传文件
- Extjs3.0角色权限管理系统-角色管理模块篇
- Ubuntu14.04在命令行下将默认语言改为英语