随笔分类 - Algorithm
摘要:基本原理 在摊还分析(amortized analysis)中, 通过求数据结构的一个操作序列中的所有操作的平均执行时间, 来评价操作的代价. 摊还分析不同于平均情况分析, 它并不涉及概率, 可以保证最坏情形下每个操作的平均性能. 常用的三种技术: 聚合分析(aggregate analysis),
阅读全文
摘要:原理 赫夫曼编码可以很有效地压缩数据: 通常可以节省20%-90%, 具体的压缩率依赖于数据的特性; 若将待压缩数据看做是字符序列, 根据每个字符的出现频率, 赫夫曼贪心算法构造出字符的最优二进制表示, 即霍夫曼编码. 二进制字符编码(binary character code, 简称编码 code
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 给定单向链表的头指针和一个结点指针,定义一个函数在 O(1) 时间删除该结点.链表结点与函数的定义如下: 算法设计思想 通常,在单向链表中,删除一个链表的结点,都会先从表头
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数.比如输入 3,则打印出 1,2,3 一直到最大的 3 位数即 999 . 算法设计思想 由于最大的 n 位十进制
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 实现函数 double Power(double base, int exponent),求 base 的 exponent 次方。不得使用库函数,同时不需要考虑大数问题。
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如把 9 表示成二进制是 1001,有 2 位是 1。因此如果输入 9,该函数输出是 2。 算法设计思想
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 1. 写一个函数,输入 n, 求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: 2. 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 {3, 4, 5, 1, 2} 为 {
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点功能。 进一步详细说
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 输入某二叉树前序遍历和中序遍历结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 进一步详细说明:例如输入前序遍历序列 {1, 2, 4, 7,
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 输入一个链表的头结点, 从尾到头反过来打印出每个结点的值。 进一步详细说明:不允许在打印时修改链表的结构。链表结点可定义为: 算法设计思想 正常情况,遍历链表都是从前到后的
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 请实现一个函数,把字符串中的每个空格替换为 "%20" 。例如输入 "We are happy.", 则输出 "We%20are%20happy." 。 进一步详细说明:
阅读全文
摘要:(说明:本博客中的题目、题目详细说明及参考代码均摘自 “何海涛《剑指Offer:名企面试官精讲典型编程题》2012年”) 题目 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断是否含有该整数。 进一步的详
阅读全文