js算法(2)
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)的更多相关文章
- js算法集合(一) 水仙花数 及拓展(自幂数的判断)
js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法, ...
- js算法集合(二) javascript实现斐波那契数列 (兔子数列)
js算法集合(二) 斐波那契数列 ★ 上一次我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,这次,我们来对斐波那契数列进行研究,来加深对循环的理解. Javascript实 ...
- js算法初窥03(简单搜索及去重算法)
前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法--顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...
- JS算法练习四
JS算法练习 1.将使用空格分隔单词使用驼峰命名连接起来: var str="HELLO world welcome to my hometown"; /*--先输入一个有空格分隔 ...
- JS算法练习三
JS算法练习 1.生成一个长度为10的随机数组,使用冒泡法给数组排序 var arr=new Array(10); for (var i = 0; i <arr.length ; i++) { ...
- JS算法练习二
JS算法练习 1.生成4位的随机验证码,可取大小写字母和数字 ? var validateCode = "", /*--存放生成好的验证码字符串--*/ count = 0; /* ...
- JS算法练习一
JS算法练习 1.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么? ①.数组添加元素的方式得到位数(数组长度)与值(数组元素) ①.数组添加元素的方式得到位数(数组长度)与值(数组元 ...
- js算法初窥05(算法模式02-动态规划与贪心算法)
在前面的文章中(js算法初窥02(排序算法02-归并.快速以及堆排)我们学习了如何用分治法来实现归并排序,那么动态规划跟分治法有点类似,但是分治法是把问题分解成互相独立的子问题,最后组合它们的结果,而 ...
- js算法初窥03(搜索及去重算法)
前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...
- js算法之寻路
A*寻路算法 算法流程说明: 说明:起始节点记作S,目标节点记作E,对于任意节点P,从S到当前节点P的总移动消耗记作GP,节点P到目标E的曼哈顿距离记作HP,从节点P到相邻节点N的移动消耗记作DPN, ...
随机推荐
- openjudge dp水题记录
当发现自己竟然不会打dp的时候内心是崩溃的,然后按照一年前的刷题记录刷openjudge,然后发现自己准确率比一年前(刚学信竞两个月时)的准确率低得多,已经没救. 列一下最近打的几道sb题 2985: ...
- scrapy 调用js
依赖: PyExecJS 使用案例: from execjs import execjs text = response.xpath('//script/text()')[1].get() ctx = ...
- request header....
root@xxx# curl -i --get --include 'http://ali-barcode.showapi.com/barcode?code=6938166920785' -H 'Au ...
- MySQL统计同比环比SQL
大体思路: MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份.月份,然后通过left join关联时间字段去计算环比.同比公式即可 原始表结构: 求同比SQL ...
- Python基础:09函数式编程
Python支持一些函数式编程的特性.比如lambda. map().reduce().filter()函数. 一:匿名函数与lambda Python可以用lambda 关键字创造匿名函数.匿名函数 ...
- 当better-scroll遇见了react擦出的火花
关于better-scroll这个插件前面已经介绍过两次了 从原生js使用到结合服务端发送数据使用都有过介绍 今天给大家分享一下这款插件在react中遇见的坑 总之我真是对这款插件又爱又恨 每次各种 ...
- Python中进制转换函数的使用
Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...
- vscode settings.json配置
// 将设置放入此文件中以覆盖默认设置 { "editor.fontSize": 18, "editor.tabSize": 2, "editor.m ...
- Android 设置ImageView宽度固定,其高度按比例缩放适应
今天和项目经理对喷了一下,他说在应用的列表数据中的图片应该宽度固定,高度按比例缩放自适应,我说,那岂不是很丑!直接让运营那边把图片处理成固定宽高比不就好了,省的我客户端麻烦了. 这家伙不同意,为毛呢, ...
- TCP/IP模型的层次结构