看算法总结(微软面试系列)
文章平均质量分 79
前进的菜鸟
这个作者很懒,什么都没留下…
展开
-
第一章、左旋转字符串
题目描述:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。在这里都假设K 〈 N,如果不然的话,K = k%N;另外K 为正整数,如果不然的话就相当于向右移动K位.左移和右移在本质上是一样的。思想一:假设数组为:char arr[ ] ="abcd1234"。我们先试验简单的办法,可以每次将数组中的元素转载 2011-12-01 14:00:13 · 741 阅读 · 0 评论 -
第二章、字符串各种小问题
问题一:一长一短字符串的包含问题问题描述:假设这有一个各种字母组成的字符串,假设这还有另外一个字符串,而且这个字符串里的字母数相对少一些。从算法是讲,什么方法能最快的查出所有小字符串里的字母在大字符串里都有?比如,如果是下面两个字符串:String 1: ABCDEFGHLMNOPQRSString 2: DCGSRQPOM答案是true,所有在string2里的字母strin转载 2011-12-06 16:15:28 · 1336 阅读 · 0 评论 -
第三章、寻找满足条件的两个或多个数及其扩展
第一节、寻找满足条件的两个数题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。分析:直接穷举,从数组中任意选取两个数,判定它们的和是否为输入的那个数字。此举复杂度为转载 2011-12-19 17:41:38 · 2313 阅读 · 0 评论 -
第五章、求连续子数组的最大和
第一节、求子数组的最大和题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。思路一:求一个数组的最大子数组和,如此序列1, -2转载 2011-12-22 12:53:03 · 1713 阅读 · 3 评论 -
第四章、亲和数问题--求解500万以内的亲和数
第一节、亲和数问题题目描述:求500万以内的所有亲和数如果两个数a和b,a的所有真因数之和等于b,b的所有真因数之和等于a,则称a,b是一对亲和数。例如220和284,1184和1210,2620和2924。分析:首先得明确到底是什么是亲和数?亲和数问题最早是由毕达哥拉斯学派发现和研究的。他们在研究数字的规律的时候发现有以下性质特点的两个数:220的真因子是:1、2转载 2011-12-21 16:06:14 · 1547 阅读 · 0 评论 -
经典算法大全
1.河内之塔........................................................................................................................................ 42.Algorithm Gossip: 费式数列..............................转载 2014-09-24 09:46:32 · 3940 阅读 · 1 评论