JS实现求数组重复第N多元素——数组实现
2017-04-06 18:22
155 查看
实现一个函数,函数传入参数是数组和N,返回值是数组重复第N多的元素和重复次数:
初期思路:对传入的数组进行排序,将数组中的不重复的元素存入一个新数组,并将每个元素出现次数对应存入另外一个数组。根据出现次数对以上两个数组进行由大到小的排序,将元素出现次数按照大小顺序存入新数组,查找重复第N多元素,首先查找出现次数,出现次数为数组中下标为N-1的元素。最后用for循环判断输出所有符合出现次数的元素。
代码如下:
这种方法比较复杂,后续会继续优化。
初期思路:对传入的数组进行排序,将数组中的不重复的元素存入一个新数组,并将每个元素出现次数对应存入另外一个数组。根据出现次数对以上两个数组进行由大到小的排序,将元素出现次数按照大小顺序存入新数组,查找重复第N多元素,首先查找出现次数,出现次数为数组中下标为N-1的元素。最后用for循环判断输出所有符合出现次数的元素。
代码如下:
function maxN(arr,n){ arr.sort(function(a,b){ return a-b; }); var arr_num=new Array(); var arr_time=new Array(); var num=arr[0]; arr_num[0]=arr[0]; arr_time[0]=1; var k=0; var change_num; var change_time; for(let i=1;i<arr.length;i++){ if(arr[i]!=num){ k++; num=arr[i]; arr_num[k]=arr[i]; arr_time[k]=1; } else{ arr_time[k]=arr_time[k]+1; } } for(let i=0;i<arr_time.length;i++){ for(let j=i+1;j<arr_time.length;j++){ if(arr_time[i]<arr_time[j]){ change_time=arr_time[i]; arr_time[i]=arr_time[j]; arr_time[j]=change_time; change_num=arr_num[i]; arr_num[i]=arr_num[j]; arr_num[j]=change_num; } } } var arr_N1=new Array(); arr_N1=arr_time.sort(function(a,b){ return b-a; }); var arr_N=new Array(); arr_N[0]=arr_N1[0]; k=0; for(let i=0;i<arr_N1.length;i++){ if(arr_N[k]!=arr_N1[i]){ k++; arr_N[k]=arr_N1[i]; } } for(let i=0;i<arr_time.length;i++){ if(arr_time[i]==arr_N[n-1]){ console.log(arr_num[i],arr_time[i]); } } }
这种方法比较复杂,后续会继续优化。
相关文章推荐
- 【实践】js实现随机不重复抽取数组中元素
- js在数组中删除重复的元素自保留一个(两种实现思路)
- JS 清除字符串数组中,重复元素的实现方法
- 一个有趣的问题:怎么在JS的数组中去除重复元素?(JAVA实现吧..)
- (转)js在数组中删除重复的元素自保留一个(两种实现思路)
- m个元素的数组,随机选择n个不重复元素(js实现)
- js过滤数组重复元素
- 删除两个升序正数组中重复元素的C程序实现代码
- 如何正确实现PHP删除数组重复元素
- 用js实现随机返回数组的一个元素
- js去除数组中的重复元素的好方法
- java 实现从无序数组中 找出第k大的数, 无序数组充许有重复元素
- js数组去掉重复的元素
- js 获得两个数组的重复元素
- js 判断数组是否有重复元素的几种方式
- 编写js扩展方法实现判断一个数组中是否包含某个元素
- 删除数组中重复的元素(C#实现)
- 编写js扩展方法实现判断一个数组中是否包含某个元素
- 一个关于去除数组重复元素的问题(C语言实现)