
算法
文章平均质量分 59
codeplay_guo
前端爱好者
展开
-
【动态规划法】解析经典算法题Two eggs problem及其延伸问题
【动态规划法】解析经典算法题Two eggs problem及其延伸问题Two eggs problem可以说是互联网面试中老生常谈的算法题了,经常可以在各大互联网公司的笔试真题中看到它的各类变种(腾讯大厦,球掉落问题,玻璃珠问题等等)。本文将深入探讨此类问题及其延伸问题的通用解法,并给出javascript代码实现。问题描述Two-eggs problem首先看下游戏的定义: 有一幢100层的原创 2017-03-28 12:04:14 · 2876 阅读 · 0 评论 -
【算法分析与设计】快速求幂算法的分析及java实现
ACM的竞赛中,经常会出现涉及到大数模幂运算的题目,如求解2的10000次方模100000009的结果,这就需要我们设计一种有效的求幂算法。本文将结合的以上应用场景,分析以下几种常用的求幂算法并给出java代码的实现:递归方法:二分快速求幂(又叫矩阵快速幂算法)非递归方法:二进制转换法二分快速求幂这种方法的设计思想很简单:对于A的n次幂,当n为偶数时,A^n = A^(n/2) * A^(n/原创 2017-04-03 23:14:11 · 1321 阅读 · 0 评论 -
给定N个节点求组成二叉搜索树个数——从一道算法题探讨神奇的Catalan数
引Catalan数,中文卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中的数列。一旦入坑,你会发现这个数列相当有意思,能够应用于很多看起来特别复杂的计算场景,当然,并能将之迎刃而解。 wikipedia定义:卡塔兰数是组合数学中一个常在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡特兰(1814–1894)命名。历史上,清代数学家明安图(1692年-1763年)在其《割圜密原创 2017-04-07 16:55:56 · 11458 阅读 · 6 评论 -
回溯法打印卡特兰数问题--牛客编程题解题记录
今天在牛客上做到一个题,用到了卡特兰数的知识。 那道题我会单独写一篇博客,这里把其中一个子问题抽象出来,给出代码方案: 给了长度为2n的顺序数列,先将数列分成两排,要求第一排的每一列小于等于对应的第二排的数字,每排顺序排列,打印出所有排序方案。这里我用回溯方法解决,对所有方案进行深度优先遍历,如果‘0的数量大于1’(参加上文排队问题),则返回上层。 这里我构造了两个空数列:firstLine和原创 2017-05-19 23:08:48 · 509 阅读 · 0 评论 -
牛客网互联网秋招模拟笔试编程题第三题
上一篇博文中给出了子问题的解决算法。这里给出完整题目和代码。 题目就贴截图好了: var readline = require('readline');const rl = readline.createInterface({ input: process.stdin, output: process.stdout, terminal:false});var n原创 2017-05-19 23:30:29 · 476 阅读 · 0 评论 -
阿里前端算法面试题两道
二维数组的全排列组合。 如输入[[1,2],[3,4],[5,6]] 输出: [ 1, 3, 5 ] [ 1, 3, 6 ] [ 1, 4, 5 ] [ 1, 4, 6 ] [ 2, 3, 5 ] [ 2, 3, 6 ] [ 2, 4, 5 ] [ 2, 4, 6 ]代码实现:function printArr(arr,n,res){原创 2017-08-22 14:40:49 · 6204 阅读 · 2 评论