• js一些算法实现


    1.约瑟夫环实现
     1 //附有调试
     2 function joseph(n,p){
     3        var arr=[];
     4      for(var i=0;i<n;i++){
     5         arr.push(i);
     6      }
     7      debugger;
     8      var flag=0;
     9      var outnum=0;
    10     while(arr.length>1){
    11     //定义到里面 下次外层循环,数组长度已改变,定义到外面的话会死循环,浏览器卡死
    12     var len=arr.length;
    13     for(var i=0;i<len;i++){
    14        flag++;
    15        if(flag==p){
    16           flag=0;
    17           //自行脑补
    18           arr.splice(i-outnum,1);
    19           outnum++;
    20     }
    21    }
    22 }
    23 return arr[0];
    24 }
    25 //IE8以下不支持console.log()
    26 if(window.console){
    27    console.log(joseph(20,3));
    28 }
    29 else{
    30    window.console={
    31        log:function(){},
    32        happentime:function(){}
    33        //对象字面量方式自行构建
    34   }
    35 }
    View Code

     2.斐波那契数列实现

     1  1 类似数列:1,1,2,3,5,8,13,21。。。。。
     2  2 
     3  3 function ftbn(n){
     4  4       if(n=1||n=2){
     5  5       return 1;     
     6  6 }
     7  7 else 
     8  8 {
     9  9      return ftbn(n-1)+ftbn(n-2);
    10 10 }
    11 11 }
    View Code

    3.编写insertAfter

     1  function insertAfter(newElement,targetElement){
     2 
     3                var parent=targetElement.parentNode;
     4 
     5                if(parent.lastChild==targetElement){
     6 
     7                  targetElement.appendChild(newElement);
     8 
     9 }
    10 
    11 else{
    12 
    13        parent.insertBefore(newElement,targetElement.nextSibling);
    14 
    15 }
    16 
    17 }
    View Code

     4.数组去重

     1 var ss=[1,2,3,3,44,55,55,77,2,3,1];
     2 function decode2(){
     3      var arry={};
     4      var index=0;
     5      var ss2=[];
     6      var len=ss.length;
     7      for(var i=0;i<len;i++){
     8         if(arry[ss[i]]==undefined){
     9 
    10        arry[ss[i]]=1;
    11        ss2[index++]=ss[i];
    12    }
    13      else if(arry[ss[i]==1]){continue;}
    14 }
    15  return ss2
    16 }
    17 decode2();
    View Code

     5.实现一个函数,判断一个字符串内出现最多次的字符,并统计这个字符

     1 var  s="helloworld";
     2 function countStr(str){
     3      var len=str.length;
     4      var obj={}; 
     5      for(var i=0;i<len;i++){
     6        var k=str.charAt(i);
     7        if(obj[k]){
     8         obj[k]++;
     9 }
    10 else
    11 {
    12      obj[k]=1;
    13 }
    14 }
    15    var m=0,i=null;
    16      for(var b in obj){
    17         if(obj[b]>m){
    18             m=obj[b];
    19             i=b;
    20       }
    21 }
    22      return i+":"+m;
    23 }   countStr(s);
    View Code
  • 相关阅读:
    P2319 [HNOI2006]超级英雄
    P4302 [SCOI2003]字符串折叠
    P1122 最大子树和
    HDU——2089 不要62
    P4555 最长双回文串
    P1463 [HAOI2007]反素数
    P2412 查单词
    P2787 语文1(chin1)- 理理思维
    P3078 [USACO13MAR]扑克牌型Poker Hands
    ubuntu中desktop与alternate版本的区别(转载)
  • 原文地址:https://www.cnblogs.com/zoujking/p/4183518.html
Copyright © 2020-2023  润新知