zoukankan      html  css  js  c++  java
  • 二道面试算法题

    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());
  • 相关阅读:
    Linux下Redis的安装和部署
    js实现复制到剪贴板功能,兼容所有浏览器
    解决file_get_contents无法请求https连接的方法
    PHP使用正则表达式验证电话号码(手机和固定电话)
    php MYSQL 一条语句中COUNT出不同的条件
    学到的较复杂的 mysql 语名
    数据库相关 sql 语句
    php对象比较
    魔术方法
    inner join left join right join
  • 原文地址:https://www.cnblogs.com/littlewriter/p/6801706.html
Copyright © 2011-2022 走看看