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

(1)利用数组

 function findMostNum(arr){
var temp1=[];//存放去重的数字
var temp2=[];//存放各个数字的个数
var indexNum=arr[0];//存放最先开始的位置
var indexFirst=0;//存放数字第一次出现的位置
//sort方法要写参数例如[1,10,2]就会出错
arr.sort(function(a,b){//数组先排序
return a-b;
});
for(var i=0;i<arr.length;i++){
if(arr[i]!==arr[i+1]){
temp1.push(arr[i]);
temp2.push(i-indexFirst+1);
indexFirst=i+1;
}
}
var max=0;
for(var j=0;j<temp2.length;j++){
if(temp2[j]>max){
max=temp2[j];
}
}
var mostNum=[];
for(var k=0;k<temp2.length;k++){
if(temp2[k]===max){
mostNum.push(temp1[k]);
}
}
return {number:mostNum,count:max};
}
var arr=[1,10,2,2,2,2,2,4,5,6,7,8,9,3,3,3,3,3];
var obj=findMostNum(arr);
console.log('数字字数最多的是'+obj.number+';这个(些)数字的个数是'+obj.count);

(2)利用json和数组

 function findMostNum(arr){
var json={};
var newArr=[];
var mostArr=[];
for(var i=0;i<arr.length;i++){
if(json[arr[i]]){
json[arr[i]]++;
}else{
json[arr[i]]=1;
}
newArr.push(json[arr[i]]);
}
newArr.sort(function(a,b){
return b-a;
});
for(var j in json){
if(json[j]==newArr[0]){
mostArr.push(j);
}
}
return {number:mostArr,count:newArr[0]};
}
var arr=[1,10,2,2,2,2,2,4,5,6,7,8,9,3,3,3,3,3];
var obj=findMostNum(arr);
console.log('数字字数最多的是'+obj.number+';这个(些)数字的个数是'+obj.count);

2、递归调用 斐波那契数列(兔子问题)

 /*使用arguments.callee的方式来调用函数 实质还是递归调用*/
// function fn(n){
// console.log(arguments);
// if(n==1){
// return 1;
// }else if(n==2){
// return 1;
// }else{
// if(result[n]){
// return result[n];
// }else{
// result[n]=arguments.callee(n-1)+arguments.callee(n-2);
// return result[n];
// }
// }
// }
function fn(n){
if(n<=2){
return 1;
}else{
return fn(n-1)+fn(n-2);
}
}

js算法(2)的更多相关文章

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

    js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法, ...

  2. js算法集合(二) javascript实现斐波那契数列 (兔子数列)

    js算法集合(二)  斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解.     Javascript实 ...

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

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法--顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...

  4. JS算法练习四

    JS算法练习 1.将使用空格分隔单词使用驼峰命名连接起来: var str="HELLO world welcome to my hometown"; /*--先输入一个有空格分隔 ...

  5. JS算法练习三

    JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...

  6. JS算法练习二

    JS算法练习 1.生成4位的随机验证码,可取大小写字母和数字 ? var validateCode = "", /*--存放生成好的验证码字符串--*/ count = 0; /* ...

  7. JS算法练习一

    JS算法练习 1.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么? ①.数组添加元素的方式得到位数(数组长度)与值(数组元素) ①.数组添加元素的方式得到位数(数组长度)与值(数组元 ...

  8. js算法初窥05(算法模式02-动态规划与贪心算法)

    在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...

  9. js算法初窥03(搜索及去重算法)

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...

  10. js算法之寻路

    A*寻路算法 算法流程说明: 说明:起始节点记作S,目标节点记作E,对于任意节点P,从S到当前节点P的总移动消耗记作GP,节点P到目标E的曼哈顿距离记作HP,从节点P到相邻节点N的移动消耗记作DPN, ...

随机推荐

  1. mysql操作手册2

          6 rows in set (0.00 sec) # 我们再把 table 的位置交换一下,再用 right join 试试 select a.id,a.name,b.dept_id fr ...

  2. 服务网关zuul----zuul中的动态刷新路由配置

    Spring Cloud实战小贴士:Zuul处理Cookie和重定向 所以解决该问题的思路也很简单,我们只需要通过设置sensitiveHeaders即可,设置方法分为两种: 全局设置: zuul.s ...

  3. 使用 UIWebView 来播放视频

    MPMoviePlayerController 并不是继承自 UIViewController SDK 中的例子使用的是 addSubviews 的方式来添加 MPMoviePlayerControl ...

  4. 在dva框架和create-react-app创建出来的框架中修饰器语法与按需加载引入antd分别配置

    按需加载需要的包  babel-plugin-import    装饰器语法需要的包  @babel/plugin-proposal-decorators dva框架 将.webpackrc  改成. ...

  5. Android 高仿微信支付键盘

    现在很多app的支付.输入密码功能,都已经开始使用自定义数字键盘,不仅更加方便.其效果着实精致. 下面带着大家学习下,如何高仿微信的数字键盘,可以拿来直接用在自身的项目中. 先看下效果图: 1. 自定 ...

  6. 归并排序及应用 (nyoj 117 求逆序数)

    求逆序数 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中 ...

  7. Unity3D游戏开发之在Unity3D中视频播放功能的实现

    版权声明:欢迎订阅公众号[5厘米的理想],愿生命里的每个小理想,都能成为生命里的小确幸.本文地址为: https://blog.csdn.net/qinyuanpei/article/details/ ...

  8. HDFS概念名称节点和数据节点-名称节点

  9. 解决ViewState过于庞大的问题

    这里是我将ViewState持久化保持在服务器端的代码,这样ViewState不占用网络带宽,因此其存取只是服务器的磁盘读取时间.并且它很 小,可以说是磁盘随便转一圈就能同时读取好多ViewState ...

  10. phpstorm 左边的文件列表没用了 怎么弄出来

      ALT+1ALT+数字键,是各种工具栏的显示与隐藏快捷键,你可以挨个试一下.