• 二道面试算法题


    1.农场买了一只小羊,这种羊在第一年是小羊,第二年的年底会生一只小羊,第三年不生小羊,第四年的年底还会再生下一只小羊,第五年就死掉了。

    function sheepNum(year){
        var num = 1;
        for(var i=1; i<=year; i++){
            if(i==2){
                num += sheepNum(year - 2);
            }else if(i==4){
                num += sheepNum(year - 4);
            }else if(i==5){
                num--;
            }
        }
        return num;
    }

    写出代码对下列数组去重并从大到小排列{5,2,3,6,8,6,5,4,7,1,9}

    第一种方法(有局限,需要排序)

    Array.prototype.unique2 = function(){
     this.sort(); //先排序
     var res = [this[0]];
     for(var i = 1; i < this.length; i++){
      if(this[i] !== res[res.length - 1]){
       res.push(this[i]);
      }
     }
     return res;
    }
    var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
    alert(arr.unique2());

    第二种方法(推荐使用)

    思路:

    1.创建一个新的数组存放结果

    2.创建一个空对象

    3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。

    说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。

    Array.prototype.unique3 = function(){
     var res = [];
     var json = {};
     for(var i = 0; i < this.length; i++){
      if(!json[this[i]]){
       res.push(this[i]);
       json[this[i]] = 1;
      }
     }
     return res;
    }
    
    var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
    alert(arr.unique3());
  • 相关阅读:
    Laravel5.1学习笔记15 数据库1 数据库使用入门
    Laravel5.1学习笔记i14 系统架构6 Facade
    Laravel5.1学习笔记13 系统架构5 Contract
    Laravel5.1学习笔记12 系统架构4 服务容器
    Laravel5.1学习笔记11 系统架构3 服务提供者
    JavaScript之“创意时钟”项目
    JQuery轮播图
    SQL Server之增删改操作
    jQuery之基本选择器Practice
    JQuery---选择器、DOM节点操作练习
  • 原文地址:https://www.cnblogs.com/littlewriter/p/6801706.html
Copyright © 2020-2023  润新知