摘要:1 题目描述 有一栋100层高的大楼,给你两个完全相同的玻璃球。假设从某一层开始,丢下玻璃球会摔碎。那么怎么利用手中的两个球,用什么最优策略知道这个临界的层是第几层? 2 解法汇总 2.1 递推方法一 第一次扔k层 ,则次数time=1,第二次,如果破了,要试从1到k-1层,此时需要Time=tim
阅读全文
随笔分类 - 数据结构与算法
数据结构与算法相关
摘要:1 引入问题 对于一颗有N个节点的二叉树,可以变化成多少种形态呢?例如:1、3、5、6、9、10可以组成多少种不同的二叉树形态? 2 卡特兰数 百度百科搜“卡特兰数”看了半天没看懂,但是搜了一个网页后看懂了递推思路了: 对于一个规模为n的问题,先找一个元素固定下来,然后将剩下的n-1个元素拆分成两个
阅读全文
摘要:原文地址:《十大经典排序算法(动图演示)》 0、算法概述 0.1 算法分类 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序
阅读全文
摘要:10 递归:如何用三行代码找到“最终推荐人” 递归的含义:一种非常简洁、高效的编码技巧,方法/函数调用自身的方式称之为递归,调用为“递”,返回为“归”。 所有的递归问题都可以用递推公式来表达。 优点:代码表达能力强,编码简洁。 缺点:(1)空间复杂度高,存在栈溢出风险(策略:可以设置递归次数强行终止
阅读全文
摘要:1 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。 通常情况下,罗马数字中小的数字在大的数字的右边。但也存在
阅读全文
摘要:1 题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器,且 n 的值
阅读全文
摘要:1、相关文献 大名鼎鼎的Google论文《MapReduce: Simplified Data Processing on Large Clusters》 对应的中文翻译《MapReduce中文翻译》
阅读全文
摘要:1、加快代码速度 刷了前面几道题发现速度总是处于尾部10%,刚开始非常不服,后来仔细一看那些排名靠前的提交,发现了猫腻。几乎每一个提交都有这样的一段代码: 啥意思?看拆分的这几部分解析: (1)网友写的《C++11 Lambda表达式》 (2)另一位网友写的代码分析:https://blog.csd
阅读全文
摘要:1、算法导论描述 参见《算法导论》对快速排序的伪代码描述: 关键代码: 模拟过程表示: 2、C++实现 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <time.h> 4 5 #define DATA_LEN 20 6 7 void Pr
阅读全文
摘要:一、问题描述 给定一个正整数n,请计算n的阶乘n!末尾所含有“0”的个数。例如: 5!=120,其末尾所含有的“0”的个数为1; 10!= 3628800,其末尾所含有的“0”的个数为2; 20!= 2432902008176640000,其末尾所含有的“0”的个数为4。 二、算法分析 此类问题很显
阅读全文

浙公网安备 33010602011771号