资讯专栏INFORMATION COLUMN

js算法题合集(不定期更新)

william / 586人阅读

摘要:前言本系列总结了在前端面试中可能遇到的若干算法题,不定期更新最近看有同学面试遇到了阶{{BANNED}}跳问题级台阶,每次最多允许跨步,求多少种跨越方式,下面是一个变种问题题目假设有级台阶,每次最多允许跨步,那么有多少种跨越方式思路采用自顶向下的思考方式

前言:本系列总结了在前端面试中可能遇到的若干算法题,不定期更新

最近看有同学面试遇到了n阶{{BANNED}}跳问题(n级台阶,每次最多允许跨n步,求多少种跨越方式),下面是一个变种问题

题目:假设有n级台阶,每次最多允许跨m步(m<=n),那么有多少种跨越方式? 思路:采用自顶向下的思考方式

f(n,m) = f(n-1,m)+f(n-2,m)+...+f(n-m,m)
当m=2时,这就是一个斐波那契数列。
同时,对于n阶{{BANNED}}跳,即n=m时,用公式有以下特点:
f(n) = f(n-1)+f(n-2)+...+f(1);//①
f(n-1) = f(n-2)+f(n-3)+...+f(1);//②
①-② 即f(n) = 2f(n-1),可以看出n阶{{BANNED}}跳的结果,实际是一个等比数列,也就是f(n) = 2^(n-1)

解法1:递归算法
function f(n,m) {
    var count = 0;
    if (n == 0) {
        return 1;
    }
    if (n >= m) {
        for (var i=1; i<=m; i++) {
            count += f(n-i,m);
        }
    }else {
            count += f(n,n);
        }
    return count;
}
解法2:非递归算法
//首先根据规律,存储前m项结果,当n a+b))
    }
    return arr.pop();
}
深度遍历js对象的属性名 题目:给定若干嵌套项的js对象,如下
//输入对象
var obj = {
    a: {
        b: {
            c: {
                d:"h",
                j:"l",
                o: {
                    p:"q",
                    r:"s"
                },
                t: "u"
            }
        },
        v: {
            w: {
                x: {
                    y: "z"
                }
            }
        }
    },
    e: {
        f: {
            i: "k"
        },
        m: "n"
    }
}

//输出结果,按照层数,把同一层的属性放在同一个子数组内
var result = [[a,e],[b,v,f,m],[c,w,i],[d,j,o,t,x],[p,r,y]];
解题思路:按照深度遍历所有属性即可,注意对每一层做标记
//输出结果数组
var result = [];
//递归层数,也就是属性层数
var num = 0;

function getProp(obj) {
    //获取对象的属性数组
    var keys = Object.keys(obj);
    var len = keys.length;
    for(var i=0; i           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84623.html

相关文章

  • 你不能错过的前端面试合集

    摘要:收集的一些前端面试题从面试题发现不足,进而查漏补缺,比通过面试更难得及各大互联网公司前端笔试面试题篇及各大互联网公司前端笔试面试题篇面试题个和个经典面试题前端开发面试题如何面试前端工程师很重要个变态题解析如何通过饿了么面试轻 收集的一些前端面试题 从面试题发现不足,进而查漏补缺,比通过面试更难得 1 BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 2 BAT...

    ninefive 评论0 收藏0
  • 你不能错过的前端面试合集

    摘要:收集的一些前端面试题从面试题发现不足,进而查漏补缺,比通过面试更难得及各大互联网公司前端笔试面试题篇及各大互联网公司前端笔试面试题篇面试题个和个经典面试题前端开发面试题如何面试前端工程师很重要个变态题解析如何通过饿了么面试轻 收集的一些前端面试题 从面试题发现不足,进而查漏补缺,比通过面试更难得 1 BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 2 BAT...

    darkbaby123 评论0 收藏0
  • JavaScript - 收藏集 - 掘金

    摘要:插件开发前端掘金作者原文地址译者插件是为应用添加全局功能的一种强大而且简单的方式。提供了与使用掌控异步前端掘金教你使用在行代码内优雅的实现文件分片断点续传。 Vue.js 插件开发 - 前端 - 掘金作者:Joshua Bemenderfer原文地址: creating-custom-plugins译者:jeneser Vue.js插件是为应用添加全局功能的一种强大而且简单的方式。插....

    izhuhaodev 评论0 收藏0
  • 前端阅读 - 收藏集 - 掘金

    摘要:实现不定期更新技巧前端掘金技巧,偶尔更新。统一播放效果实现打字效果动画前端掘金前端开源项目周报前端掘金由出品的前端开源项目周报第四期来啦。 Web 推送技术 - 掘金腾讯云技术社区-掘金主页持续为大家呈现云计算技术文章,欢迎大家关注! 作者:villainthr 摘自 前端小吉米 伴随着今年 Google I/O 大会的召开,一个很火的概念--Progressive Web Apps ...

    lingdududu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<