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, ...
随机推荐
- nodeJs学习-13 router
const express=require('express'); var server=express(); //目录1:/user/ var routeUser=express.Router(); ...
- spring-data-jpa实体类继承抽象类如何映射父类的属性到数据库
在抽象父类上加上注解@MappedSuperclass @MappedSuperclass public class Pet { private Integer id;//id private Str ...
- TIJ——Chapter Fourteen:Type Information
Runtime type information(RTTI) allows you to discover and use type information while a program is ru ...
- 从零学React Native之09可触摸组件
可触摸组件有: TouchableHighlight,TouchableNativeFeedback,TouchableOpacity,TouchableWithoutFeedback 1. Touc ...
- hdu 2089 不要62【数位dp】
HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...
- Save and Load from XML
using UnityEngine; using System.Collections; using System.Xml; using System.Xml.Serialization; using ...
- es6 默认参数、rest参数、扩展运算符
1.默认值 现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了. function sayHello(name){ //传统的指定默认参数的方式 var name ...
- Android教程 -07 Activity的任务栈和启动模式
Activity是由任务栈管理的,一般情况下一个应用程序只有一个任务栈. 什么是栈? 栈是一种常用的数据结构,栈只允许访问栈顶的元素,栈就像一个杯子,每次都只能取杯子顶上的东西 栈的特点就是先进后出, ...
- iptables 连线追踪(Connection tracking)
「连線追蹤」:提供可用於判断包相关性的额外资讯.举例来說,一次FTP session同时需要两条分离的连線,控制与资料传输各一:用於追蹤FTP连線的扩充模组,运用对於FTP恊定的认知,从控制连線上流动 ...
- UTF-8与UTF-8 BOM
在我们通常使用的windows系统中,我发现了一个有趣的现象.我新建一个空的文本文档,点击文件-另存为-编码选择UTF-8,然后保存.此时这个文件明明是空的,却占了3字节大小.原因在于:此时保存的编码 ...