js算法(2)

1寻找一个数组中最多的那个数

(1)利用数组

 1 function findMostNum(arr){
 2     var temp1=[];//存放去重的数字
 3     var temp2=[];//存放各个数字的个数
 4     var indexNum=arr[0];//存放最先开始的位置
 5     var indexFirst=0;//存放数字第一次出现的位置
 6     //sort方法要写参数例如[1,10,2]就会出错
 7     arr.sort(function(a,b){//数组先排序
 8         return a-b;
 9     });
10     for(var i=0;i<arr.length;i++){
11         if(arr[i]!==arr[i+1]){
12             temp1.push(arr[i]);
13             temp2.push(i-indexFirst+1);
14             indexFirst=i+1;
15         }
16     }
17     var max=0;
18     for(var j=0;j<temp2.length;j++){
19         if(temp2[j]>max){
20             max=temp2[j];
21         }
22     }
23     var mostNum=[];
24     for(var k=0;k<temp2.length;k++){
25         if(temp2[k]===max){
26             mostNum.push(temp1[k]);
27         }
28     }
29     return {number:mostNum,count:max};
30 }
31 var arr=[1,10,2,2,2,2,2,4,5,6,7,8,9,3,3,3,3,3];
32 var obj=findMostNum(arr);
33 console.log(‘数字字数最多的是‘+obj.number+‘;这个(些)数字的个数是‘+obj.count);                                        

(2)利用json和数组

 1 function findMostNum(arr){
 2     var json={};
 3     var newArr=[];
 4     var mostArr=[];
 5     for(var i=0;i<arr.length;i++){
 6         if(json[arr[i]]){
 7             json[arr[i]]++;
 8         }else{
 9             json[arr[i]]=1;
10         }
11         newArr.push(json[arr[i]]);
12     }
13     newArr.sort(function(a,b){
14         return b-a;
15     });
16     for(var j in json){
17         if(json[j]==newArr[0]){
18             mostArr.push(j);
19         }
20     }
21     return {number:mostArr,count:newArr[0]};
22 }
23 var arr=[1,10,2,2,2,2,2,4,5,6,7,8,9,3,3,3,3,3];
24 var obj=findMostNum(arr);
25 console.log(‘数字字数最多的是‘+obj.number+‘;这个(些)数字的个数是‘+obj.count);
时间: 2024-11-14 13:40:19

js算法(2)的相关文章

js算法集合(一) 水仙花数 及拓展(自幂数的判断)

js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,希望能对大家有所帮助. 1.验证一个数是否为水仙花数 ①要写水仙花数的算法,我们首先来了解一下什么是水仙花数,水仙花数是指一个 3位正整数 ,它的每个位上的数字的 3次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153): ②了解了什么是水仙花数我们就开始分析该怎么下手.通过定义来看

js算法集合(二) javascript实现斐波那契数列 (兔子数列) Javascript实现杨辉三角

js算法集合(二)  斐波那契数列.杨辉三角 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列和杨辉三角进行研究,来加深对Javascript的理解. 一.Javascript实现斐波那契数列 ①要用Javascript实现斐波那契数列,我们首先要了解什么是斐波那契数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为

js算法初窥03(简单搜索及去重算法)

前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法--顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇文章写好的架子作为基础,在其中加入顺序搜索的方法: //顺序搜索 this.sequentialSearch = function(item) { for(var i = 0; i < array.length; i++) { if(item === array[i]) { return i; };

JS算法总结

1.选择排序: var arr = [3,6,7,2,6,4,1,6,8,24,12,53]; function sort(arr){ // 当数组的长度小于1的时候结束递归 if(arr.length==1){ return arr; } var min = arr[0],index = 0; for(var i=0;i<arr.length;i++){ // 计算最小值,如果数组当前值比之前的值还小那么min等于最小值. if(arr[i]<min){ min = arr[i]; // 保

json js 算法 面试

Git远程操作详解 - 阮一峰的网络日志http://www.ruanyifeng.com/blog/2014/06/git_remote.html 2.XHR_百度文库http://wenku.baidu.com/link?url=bxf_ou2tKCmrl4OW_zKrH8Oikgtrjn8nuvLE32wWR-v8B946Gl26C6QoaZKBXme869Do-h44DfzTBcvQxqTn_jtM0IXWFBXEQdHt4dYMIhq Java web过滤器验证登录(避免未经登录进入主

js算法:分治法-棋盘覆盖

在一个 2^k * 2^k 个方格组成的棋盘中,若恰有一个方格与其他方格不同.则称该方格为一特殊方格,称该棋盘为一特殊棋盘.显然特殊方格在棋盘上出现的位置有 4^k 种情形.因而对不论什么 k>=0 .有 4^k 种不同的特殊棋盘. 下图所看到的的特殊棋盘为 k=2 时 16 个特殊棋盘中的一个. 在棋盘覆盖问题中,要用下图中 4 中不同形态的 L 型骨牌覆盖一个给定的特殊棋牌上除特殊方格以外的全部方格,且不论什么 2 个 L 型骨牌不得重叠覆盖. 易知,在不论什么一个 2^k * 2^k 的棋

利用tween.js算法生成缓动效果

在讲tween类之前,不得不提的是贝塞尔曲线了.首先,贝塞尔曲线是指依据四个位置任意的点坐标绘制出的一条光滑曲线.它在作图工具或动画中中运用得比较多,例如PS中的钢笔工具,firework中的画笔等等.无论运用在哪里,它们的原理都是一样的.同样,在用js实现运动效果时,我们也可以利用贝塞尔曲线来实现不同的特效,而tween.js就是一个封装好的计算辅助算法.你可以通过连续输入多个值,然后利用贝塞尔曲线公式输出不同的值,最终形成了一条光滑的曲线.因为一条曲线上的值的不一样的,所以我们可以利用曲线的

js算法:动态规划-金矿模型与买书问题(附js源码)

本文内容介绍转自博客:通过金矿模型介绍动态规划,后面附上我自己实现的js代码: 经典的01背包问题是这样的: 有一个包和n个物品,包的容量为m,每个物品都有各自的体积和价值,问当从这n个物品中选择多个物品放在包里而物品体积总数不超过包的容量m时,能够得到的最大价值是多少?[对于每个物品不可以取多次,最多只能取一次,之所以叫做01背包,0表示不取,1表示取] 为了用一种生动又更形象的方式来讲解此题,我把此题用另一种方式来描述,如下: 有一个国家,所有的国民都非常老实憨厚,某天他们在自己的国家发现了

js算法初窥02(排序算法02-归并、快速以及堆排序)

上一篇,我们讲述了一些简单的排序算法,其实说到底,在前端的职业生涯中,不涉及node.不涉及后台的情况下,我目前还真的没想到有哪些地方可以用到这些数据结构和算法,但是我在前面的文章也说过了.或许你用不到,但是,真的,如果你想要在前端领域有一个不错的发展.数据结构和算法一定是你的必修课.它不仅仅让你在处理问题的时候可以有一个思维底蕴,更重要的是,在遇到一些奇葩产品的时候,你可以和他PK到底!嗯,到底! 哈哈,开个小玩笑.咱们还是聊点有营养的.上一篇的算法比较简单,主内容就是循环,次内容就是比较.但

关于js算法行列互换

HTML代码的话就是 <ul id="ul1"></ul> css body,ul,li{margin: 0;padding: 0;font-family: "黑体";background: #eee;} li{list-style: none;} #ul1{margin: 20px auto;border-top: 1px solid #666;border-left: 1px solid #666;overflow: hidden;tex