WangIcter的专栏

Raised again, my foe! Eternal Night lends him strength; I must bring the dawn.

字符串匹配算法总结

KMP虽然经典,但是理解起来极其复杂,好不容易理解好了,便起码来巨麻烦! 其实,比KMP算法速度快的算法大把大把,而且理解起来更简单,为何非要抓住KMP呢?笔试出现字符串模式匹配时直接上sunday算法,既简单又高效,何乐而不为? 说实话,想到sunday算法的那个人,绝对是发散思维,绝对...

2012-12-13 10:02:12

阅读数:1173

评论数:0

股市买入卖出时间点选择问题

题目: 给你一个股价序列,告诉你每个时间点的股价,问你什么时候买什么时候卖获利最大。时间复杂度越低越好。   解答: 方法一: 只需要从左往右遍历一遍序列Sequence[N],获得每一个元素对应的左边的最小值即可。例如,设为min[N]。 再次遍历序列时,通过计算Sequence[i...

2012-12-11 16:30:32

阅读数:2454

评论数:0

Google面试题——蓄水问题

问题: 有一块矩形土地被划分成 N×M 个正方形小块,每块是一平方米。这些小块高低不平,每一小块地都有自己的高度H(i, j)米。水可以由任意一块地流向周围四个方向的四块地中,但不能直接流入对角相连的小块中。一场大雨后,许多低洼地方都积存了不少降水,求出它最多能积存多少立方米的降水么? 思路:...

2012-12-11 16:23:11

阅读数:1516

评论数:0

数组的连续子数组最大和(首尾相连)

题目: 求一个循环数组的连续子数组的最大和。 解法: 《编程之美》上给出一种方法: 1)求[0, n-1]的最大和; 2)如果跨过了n-1,则计算以n-1为尾部的最大子数组[i, n-1],以0为开始的最大子数组[0 , j]; 如果i 否则,M= a[0]+...+a[j] + a...

2012-10-20 23:42:52

阅读数:1652

评论数:0

《编程之美》蚂蚁爬杆问题的扩展【1】

有一根长为L的平行于x轴的细木杆,其左端点的x坐标为0(故右端点的x坐标为L)。刚开始时,上面有N只蚂蚁,第i(1≤i≤N)只蚂蚁的横坐标为xi(假设xi已经按照递增顺序排列),方向为di(0表示向左,1表示向右),每个蚂蚁都以速度v向前走,当任意两只蚂蚁碰头时,它们会同时调头朝相反方向走,速度不...

2012-10-20 22:03:25

阅读数:3503

评论数:1

如何将一棵树转换成二叉树

题目: 如何将一棵树转换成二叉树?   解答: 1. 将 节点的孩子 放在左子树; 2. 将 节点的兄弟 放在右子树。   延伸: 任何一棵树都可以表示成二叉树,并不是任何一棵二叉树都可以表示成树。那么树多还是二叉树多?   1. 任何一棵树都可以表示成二叉树,结合以上题目很容...

2012-09-29 14:34:26

阅读数:11088

评论数:5

查找兄弟单词

问题: 给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的兄弟单词,例如单词army和mary互为兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有哪些兄弟单词?要求时间和空间效率尽可能的高。   解法一: 使用hash_map和链表。...

2012-09-16 19:46:29

阅读数:7022

评论数:2

面经

1. 判断两节点是否是祖先和后代的关系; 思路一:生成父指针,从孩子节点向上寻找,o(n);要求继续优化,可以采用跳表的方式来实现,这里涉及了一个孩子节点和祖先节点的层数问题,例如,输入两节点的层数差,直接利用跳表就很容易到达。 思路二:利用深度优先遍历的思想。 2. 沿着地球表面走,先向南...

2012-09-14 19:09:39

阅读数:867

评论数:2

利用动态规划求连续数组最大和以及最大子矩阵的和

题目一: 给定一个整型数组,数组中有正有负,求最大连续子序列的和。   解法: 利用动态规划的思想。 设f(n)表示以a[n]为子序列最后一个元素的最大和,则可以有下面的规则: (1)当f(n-1) (2)当n!=0且f(n-1)>0时,f(n)=f(n-1)+a[n]。 用...

2012-09-08 16:07:43

阅读数:3633

评论数:0

求一个有序整数数组中和为K的数的对数

题目: 求一个有序整数数组中和为K的数的对数。 解决方案: 两个指针,一个在头,一个在尾; 大则-,小则加。   延伸题目: (1)求整数数组中和为K的对数。 先排序,O(N*logN),在按照以上算法查找O(N)。 (2)求一个整数数组差为K的数的对数。 先排序,O(N*lo...

2012-09-03 18:32:32

阅读数:1805

评论数:2

将多个集合合并成没有交集的集合

百度面试题:将多个集合合并成没有交集的集合 2010-03-20 18:25 给定一个字符串的集合,格式如:{aaa bbb ccc}, {bbb ddd},{eee fff},{ggg},{ddd hhh}要求将其中交集不为空的集合合并,要求合并完成后的集合之间无交集,例如上例应输出{aaa...

2012-08-30 23:32:09

阅读数:7037

评论数:3

如何判断两个矩形相交

假定矩形是用一对点表达的(minx, miny) (maxx, maxy),那么两个矩形     rect1{(minx1, miny1)(maxx1, maxy1)}     rect2{(minx2, miny2)(maxx2, maxy2)}   相交的结果一定是个矩形,构成这个相交矩...

2012-08-30 22:54:34

阅读数:3529

评论数:0

如何查找完全二叉树最后一层的最右边的结点

题目: 如何查找完全二叉树最后一层的最右边的结点。   解决方案: 需要分两种情况考虑。 (1)如果完全二叉树是用数组表示的,则直接取数组的最后一个元素。 (2)如果完全二叉树是用指针表示的: 可以如下解决: a. 从根节点开始,如果右子树存在,则每次先遍历右子树,如果右子树不存在...

2012-08-28 22:36:38

阅读数:2065

评论数:0

【程序员面试宝典】递归之两个字符串连接次序问题(P83)

题目: 输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序。即输出125、126、145、146.   解决方案: 此处仅考虑第一个字符串中的字符在第二个字符串中的相对位置不变的情况。 此时,可以按照递归的思路思考如下: (1)递归过程中: 采用两个...

2012-08-28 22:09:34

阅读数:1435

评论数:0

判断一个图是否有环(有向图,无向图)

无向图: 法1: 如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。    n算法:   中      第一步:删除所有度      第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。         如果最后还有未删除顶点,则存...

2012-08-27 23:11:35

阅读数:1712

评论数:0

一个字符串中包含另一个字符串所有字符的最短子串长度?——《编程之美》最短摘要的生成的简化

题目: 给定一个字符串及一个字符串集合A,求该字符串中包含A中所有字符的最短子串长度。   解决方案一: 最直接的方法就是,直接开始遍历:查找任意两个子串之间是否包含str2,如果包含,记录下长度,求得最小值即可。 str1 = "daebfacba"; str2 ...

2012-08-25 15:32:55

阅读数:4603

评论数:0

腾讯面试题

一,设计一个魔方(六面)的程序。 P194         思路:魔方总数9 + 9 + 8 = 26                     魔方有六个面,需要定义六个结构体,内容为一个9个点和一个编号,其中每个点包含一个颜色标识;在魔方展开图中根据正方形的相邻关系编号,每个正方形都...

2012-08-24 23:41:14

阅读数:1034

评论数:0

计算点在哪些四边形内

题目: 一个平面中,有很多正四边形,大小不一,任意四边形之间可以有重叠部分,如下图所示 现在有2000个点,如何快速定位这些点分别属于哪些四边形区域?   解决方案: 采用区域分割+hash查找的方法。 1. 预处理阶段: X将四边形按照左边进行排序,然后逐一按照X轴划分区域,如...

2012-08-24 10:24:34

阅读数:1124

评论数:0

随机概率发生器

题目: 已知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器, 使得它构造0和1的概率均为1/2 解决方案: 这是随机概率发生器的典型题目。 由于需要产生1/2,而用1位0,或1位1无法产生等概率,因此,考虑将随机数扩展成2位: 00   p*p 01  ...

2012-08-24 09:52:49

阅读数:5293

评论数:3

《算法导论》之 Problem 5.1-3(随机函数发生器的设计)

问题叙述: *5.1-3  假设你希望以各1/2的概率输出0和1.你可以自由使用一个输出0或1的过程BIASED-RANDOM。它以概率p输出1,以概率1 - p输出0,其中 0   算法分析:     已知BIASED-RANDOM可产生0和1,那么 1 - BIASED-RANDOM...

2012-08-24 00:20:46

阅读数:2339

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭