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, ...
随机推荐
- 使用PHP类TCPDF生成PDF文档
转自:http://www.blhere.com/1180.html 这两天遇到一个项目中,需要php自动处理生成pdf文档.在网上找了好几个类,最后决定使用TCPDF,使用的时候真是发现这个类真是强 ...
- hdu4176 水题
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; #def ...
- 机房收费系统之【只允许一个MDI窗体 错误:426】 标签: vb 2014-08-15 10:36 1149人阅读 评论(23)
机房收费系统的主窗体是MDI窗体,为了在这个窗体上添加控件,所以我们在窗体上添加了picture控件,在MDI窗体中,子窗体实际上位于MDIClient里,即子窗体的父窗体就是MDIClient,而放 ...
- sum(),max(),avg(),RATIO_TO_REPORT()--分组统计
select id,area, sum(1) over() as 总记录数, sum(1) over(partition by id) as 分组记录数, sum(score) over() as 总 ...
- vs code python保存时pylint提示"Unable to import 'flask'"
在配置vscode python开发环境时,编写如下代码并保存时,会提示Unable to import 'flask' from flask import Flask app = Flask(__n ...
- JQuery------库
JQuery-------------模块.类库 集成了DOM/BOM/JS的类库 一.查找元素 DOM 10左右 JQuery: 选择器: 筛选: ps:版本: 1.x:兼容性最好.1.12推荐 2 ...
- IDEA使用中文api鼠标提示的设置
最近都在用IDEA来练习,发现有的方面确实比eclipse好用,eclipse里面可添加中文的API 提示,对初期的我帮助很大,但是IDEA却没有找到添加的地方,一直以来还以为不支持这个功能,比较遗憾 ...
- ORACLE学习笔记-ORACLE(基本命令)
--查看VGA信息: show sga; select * from v$sgastat;--可以通过以下几个动态性能视图查看信息: V$sysstat 系统统计信息 V ...
- VisualStudio 自定义外部命令
通过自定义命令,可以在 VisualStudio 加上一些自定义命令,可以快速启动 git 或者做其他的事情 添加命令 首先打开工具 外部命令,点击添加,然后在弹出的窗口输入下面内容 例如添加内容是打 ...
- Python基础:20类的定制
类中有一些可自定义的特殊方法,它们中的一些有预定义的默认行为,而其它一些则没有,留到需要的时候去实现.这些特殊方法是Python中用来扩充类的强有力的方式.它们可以实现模拟标准类型和重载操作符等.比如 ...