zoukankan      html  css  js  c++  java
  • 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);

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

     1 /*使用arguments.callee的方式来调用函数 实质还是递归调用*/
     2 // function fn(n){
     3 //     console.log(arguments);
     4 //     if(n==1){
     5 //         return 1;
     6 //     }else if(n==2){
     7 //         return 1;
     8 //     }else{
     9 //         if(result[n]){
    10 //             return result[n];
    11 //         }else{
    12 //             result[n]=arguments.callee(n-1)+arguments.callee(n-2);
    13 //             return result[n]; 
    14 //         }
    15 //     }
    16 // }
    17 function fn(n){    
    18     if(n<=2){    
    19         return 1;    
    20     }else{    
    21         return fn(n-1)+fn(n-2);    
    22     }    
    23 }    
  • 相关阅读:
    dedecms如何调用当前栏目的子栏目及子栏目文章
    dedecms调用当前栏目的子栏目怎么操作
    dedecms如何增加自定义字段
    关于朋友圈你所不知道的内幕
    dedecms如何快速删除跳转的文章(记得清空内容回收站)
    帝国cms调用栏目自定义字段(栏目简介)如何操作
    Introduction To Monte Carlo Methods
    Solr学习笔记-在Tomcat上部署执行Solr
    POJ 2029--Get Many Persimmon Trees +DP
    SNMP协议总结
  • 原文地址:https://www.cnblogs.com/lcddjm/p/5720634.html
Copyright © 2011-2022 走看看