谷歌2013校园招聘笔试题心得(附答案)
关于Google产品经理笔试题和面试题

关于Google产品经理笔试题和面试题Google是全球知名的科技巨头,许多人梦寐以求成为Google的产品经理。
作为一家技术驱动型企业,Google对产品经理的需求也相当高。
Google的产品经理笔试题和面试题具有一定的难度,考察的内容涵盖了产品理解、逻辑思维、分析能力和创新意识等多个方面。
本文将从笔试题和面试题两个方面,详细介绍Google产品经理的招聘流程和相关问题。
一、Google产品经理笔试题1. 产品问题:针对候选人的产品理解和分析能力进行考察。
例如,给定一个产品场景,要求候选人结合自身经验和思考,回答相关问题,如如何提升该产品在竞争市场中的竞争力,如何优化用户体验等。
2. 逻辑问题:考察候选人的逻辑思维和问题解决能力。
例如,给定一个问题,要求候选人进行推理和分析,给出一个完整的解决方案。
3. 商业问题:考察候选人对商业模式、市场需求和机会的把握能力。
例如,给定一个市场情景,要求候选人根据手头的数据和信息,提出一种商业策略或市场推广方案。
4. 创新问题:考察候选人的创新意识和解决问题的能力。
例如,给定一个现实生活中的问题,要求候选人提出一种创新的解决方案,并阐述其优势和可行性。
二、Google产品经理面试题1. 产品设计:要求候选人结合自身经验和理解,讲述一个自己参与设计的产品案例,说明整个设计过程、面临的困难和解决方案,并进行评价和总结。
2. 技术问题:考察候选人对技术的理解和应用能力。
例如,要求候选人解释一种前沿技术的实现原理,并说明如何将其应用到具体的产品设计中。
3. 用户问题:要求候选人从用户的角度出发,讨论一个正在使用的产品的问题,并提出一些建设性的改进建议。
4. 领导能力:考察候选人的团队合作和领导能力。
例如,给定一个团队协作场景,要求候选人说明在该场景中如何发挥自己的领导作用,提高团队的效果和效率。
5. 面试官提问:考察候选人的思考和回答能力。
面试官可能会提问一些开放性问题,要求候选人深入思考,并给出合理和清晰的回答。
google 笔试题汇总 (转载)

if (2 == n)
{
return 2;
}
int mid, right;
int left = find_trib(n, mid, right);
return left + mid + right;
}
啊啊,对了,答卷的时候我可没心情写注释……刚才到 2003上测试了一下,貌似没有啥问题。唉,看来我多少还是懂一点算法的……
大题虽然题型不一,但都有一个重要特点:考递归。精确点说,我每一题都用到了递归。
第一个的题目(嗯,记的不是很完整):
在一棵(排序?)二叉树中搜索指定值,数据结构定义为(唉唉,数据结构的具体名字都不记得了,my god):
struct Node
{
Node lnext;
Node rnext;
(A)等待时间 (B)寻道时间 (C)传输时间 (D)等待时间加寻道时间
(E)等待时间加寻道时间加传输时间
二、算法
1、打印出一个二叉树的内容。
2、在一个字符串中找到第一个只出现一次的字符。如abaccdeff,输出b。
3、给定一个长度为N的整数数组(元素有正有负),求所有元素之和,最大的一个子数组。分析算法时空复杂度。不必写代码。
int tribonaci(int n)
{
if (n 0)
{
Undefined feature.
return 0;
}
if (0 == n 1 == n)
{
return 1;
}
for(i=0;isize;i++)
{
temp_sum+=a[i];
谷歌笔试题

谷歌笔试题附答案以及思路谷歌笔试题:判断一个自然数是否是某个数的平方。
当然不能使用开方运算。
假设待判断的数字是N。
方法1:遍历从1到N的数字,求取平方并和N进行比较。
如果平方小于N,则继续遍历;如果等于N,则成功退出;如果大于N,则失败退出。
复杂度为O(n^0.5)。
方法2:使用二分查找法,对1到N之间的数字进行判断。
复杂度为O(log n)。
方法3:由于(n+1)^2=n^2 + 2n + 1,= …= 1 + (2*1 + 1) + (2*2 + 1) + … + (2*n + 1)注意到这些项构成了等差数列(每项之间相差2)。
所以我们可以比较N-1,N – 1 – 3,N – 1 – 3 –5 … 和0的关系。
如果大于0,则继续减;如果等于0,则成功退出;如果小于0,则失败退出。
复杂度为O(n^0.5)。
不过方法3中利用加减法替换掉了方法1中的乘法,所以速度会更快些。
谷歌笔试题:如何随机选取1000个关键字给定一个数据流,其中包含无穷尽的搜索关键字(比如,人们在谷歌搜索时不断输入的关键字)。
如何才能从这个无穷尽的流中随机的选取1000个关键字?定义长度为1000的数组。
对于数据流中的前1000个关键字,显然都要放到数组中。
对于数据流中的的第n(n>1000)个关键字,我们知道这个关键字被随机选中的概率为1000/n。
所以我们以1000/n 的概率用这个关键字去替换数组中的随机一个。
这样就可以保证所有关键字都以1000/n的概率被选中。
对于后面的关键字都进行这样的处理,这样我们就可以保证数组中总是保存着1000个随机关键字。
谷歌笔试题:将下列表达式按照复杂度排序将下列表达式按照复杂度排序2^nn^Googol (其中Googol = 10^100)n!n^n按照复杂度从低到高为n^Googol2^nn!n^n谷歌笔试题:在半径为1的圆中随机选取一点假设圆心所在位置为坐标元点(0, 0)。
google笔试大全

google笔试大全今年10月底,Google在美国《麻省技术评论》、《LinuxJournal》、《Mensa》、《今日物理》等几本专业杂志上刊登了一份“Google实验室能力倾向测试”的试卷,开头蛊惑地写着“试试看!把答案寄回Google,你有希望去Google总部参观,并成为我们其中一员”。
有兴趣的人可以做完了邮寄给Google公司,也许会得到一个工作机会呢。
1、解答下面的隐藏等式,其中的M和E的值可以互换,但不允许第一位是0:WWWDOT - GOOGLE = DOTCOM2、用一个俳句(一种日本短诗,每句有一个与季节有关的词)来建立模型,借此预测网络搜索流量的季节性变化;3、112 11 2 1 11 1 12 2 1下一行是什么?4、你正处于一个全部由崎岖小路构成的迷宫里,手里有一个满是灰尘的笔记本,可以无线上网,但是信号很弱。
与此同时,一些阴森可怕、毫无生气的妖怪在你身边游荡。
你会怎么做呢?(1)毫无目的的四处游荡,到处碰壁,直到被迷宫里的妖怪吃掉。
(2)用笔记本作为挖掘工具,打穿地面直接进入下一关。
(3)玩网络游戏《魔法骑兵》,直至电池耗尽,你也心灰意冷。
(4)使用笔记本画出迷宫的节点地图,找到出路。
(5)发送简历给Google,告诉主管妖怪你选择退出,随后你就回到现实世界。
5、Unix有何缺陷?你准备如何补救?6、在Google工作的第一天,你发现身边的同事竟然是研究生一年级课本的作者,你会:(1)主动示好并索取签名。
(2)不改变坐姿,但放轻打字声音,避免影响她的工作和思考。
(3)把你每天的麦片和咖啡都留给她享用。
(4)在她所写的书中找到你最喜欢的内容,并告诉她这些内容已经成为你的座右铭。
7、下列哪句话最贴切的表达了Google的企业文化?(1)我感到很幸运。
(2)不要干坏事。
(3)哦,我已经解决了那个问题。
(4)你身边50英寸之内,必定能找到食物。
(5)以上皆是。
8、用3种颜色为20面体上色,每个面一种颜色,有多少种组合?你会选择哪些颜色?9、下面是故意留出的空白,请将其填满,使之看起来不那么空。
15道Google面试题(含答案)

Google的面试题在刁钻古怪方面相当出名,甚至已经有些被神化的味道。
这个话题已经探讨过很多次,这里贴出15道Google面试题并一一给出了答案,其中不少都是流传很广的。
怎么样?下边来热热身,看看你有没有可能去Google工作吧!第一题:多少只高尔夫球才能填满一辆校车?(职位:产品经理)解析:通过这道题,Google希望测试出求职者是否有能力判断出解决问题的关键。
网友的答案:我想,一辆标准大小的校车约有8英尺宽、6英尺高、20英尺长——我能知道这些数字完全是因为我曾经无数次被堵在校车后面。
据此估算,一辆校车的容积约为960立方英尺,也就是160万立方英寸。
一个高尔夫球的半径约为0.85英寸,我认为一个高尔夫球的体积约为2.6立方英寸。
用校车的容积除以高尔夫球的体积,得到的结果是66万。
不过,由于校车里面还有座位等等各种东西,而且高尔夫球的形状使得不同的球之间会有不少空隙。
我的最终估算结果是50万。
这听起来有些荒唐。
如果我直接猜的话,我给出的答案肯定是10万以下,不过我相信我的数学水平。
当然,如果这里的校车是小布什当年坐过的那种,结果还要除以2,差不多是25万个。
第二题:让你清洗西雅图所有的玻璃窗,你的报价是多少?(职位:产品经理)答案:这一题我们可以玩点花招,我们的答案是“每扇窗10美元”。
第三题:有一个人们只想生男孩子的国家,他们在有儿子之前都会继续生育。
如果第一胎是女儿,他们就会继续生育直到有一个儿子。
这个国家的男女儿童比例是多少?(职位:产品经理)答案:这一题引发了不少争议,不过我们发现,这一题的解答步骤如下:1、假设一共用10对夫妻,每对夫妻有一个孩子,男女比例相等。
(共有10个孩子,5男5女);2、生女孩的5对夫妻又生了5个孩子,男女比例相等。
(共有15个孩子,男女儿童都是7.5个);3、生女孩的2.5对夫妻又生了2.5个孩子,男女比例相等。
(共有17.5个孩子,男女儿童都是8.75个);4、因此,男女比例是1:1。
Google公司预选笔试题

Google公司预选笔试题发布时间:2010-03-16 来源:应届毕业生求职网1、假设在n进制下,下面的等式成立,n值是(d)567*456=150216a、9b、10c、12d、182、文法G:S->uvSvu|w所识别的语言是:(d)a、uvw*vub、(uvwvu)*c、uv(uv)*wvu(vu)*d、(uv)*w(vu)*3、如下程序段输出是:(c)char str[][10]={"Hello","Google"};char *p=str[0];count<<strlen(p+10);a、0b、5c、6d、104、cnt=0while(x!=1){cnt=cnt+1;if(x&1==0)x=x/2;elsex=3*x+1;}count<<cnt<<end1;当n=11时,输出:(c)a、12b、13c、14d、155、写一段程序判断一个有向图G中节点w是否从节点v可达。
(如果G中存在一条从v 至w的路径就说节点w是从v可达的)。
以下算法是用C++写成的,在bool Reachable 函数中,你可以写出自己的算法。
class Graph{public:int NumberOfNodes();//返回节点的总数bool HasEdge(int u,int v);//u,v是节点个数,从零开始依次递增,当有一条从u到v 的边时,返回true};bool Reachable(Graph&G, int v, int w){//请写入你的算法int n = NumberOfNodes();vector<bool> mark(n,0);//mark[v] = true;bfsQueue<int> q;q.push(v);while(!q.empty()) {int t = q.front();q.pop();mark[t] = true;for(int i = 0; i < n; i++) {if(HasEdge(t,i) && !mark[i]) {q.push(i);}}}return mark[w];//floyd warshellvector<vector<int> > length(n,n);fill(length[0],length[n],n+1);for(int k = 0; k < n; k++)for(int i = 0; i < n; i++)for(int j = 0; j < n; j++)length[i][j] = min(length[i][k] + length[k][j], length[i][j]);if(length[v][w] < n) return true;return false;}6、给定一棵所有边的长度均为整数的树,现要求延长其中某些边,使得从根到任意节点的路径长度相等。
google笔试题目

google笔试题目,估计被bs了zz笔试我人生中参加的第一企业笔试其实考得很基础,不过N久没有复习,很多概念都生疏了发个题目,积累下人品吧,hoho~~发信人: csyoung (Youngster), 信区: IBMClub标题: [07.5.21]Google实习生招聘笔试题目发信站: 华南木棉BBS (Tue May 22 09:40:40 2007), 转信一、选择题1、定义{1, 2, ... n}*{1, 2, ... n}上的等价关系~(a, b)~(c, d)当且仅当a+b=c+d。
定义集合A(a, b) = {(x,y)|(x,y)~(a,b)},那么{1, 2, ... n}*{1, 2, ... n}上不同集合的数量为( )A、nB、2*n-1C、2*nD、n*n2、下面一段代码的输出是( )int a, b;int *x, *y;x = a;y = b;*x = 10;*y = *x;x = y;*x = 20;cout<<a<<' '<<b<<endl;A、10 20B、20 10C、10 10D、20 203、下面一段代码的输出结果是( )void f(char* c, char d){*c = *c +1;d = d+1;cout<<c<<d;}void main(){char a = 'A', b = 'a';f(b, a);cout<<a<<b<<endl;}A、BaBaB、aBaBC、AbAbD、bBAb4、若二叉搜索树有三个节点,对应于三个不同的值A、B、C,这样的二叉搜索树共有多少种可能的构造?( )A、1B、2C、3D、4E、55、假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数?( )1) h(k) = k / N;2) h(k) = 1;3) h(k) = k mod N;4) h(k) = (k + Random(N)) mod N, Random(N)返回一个0到N-1的整数A、1)B、2)C、3)D、4)E、3)和4)6、有如下递归函数f(n),其时间复杂度为( )int f(int n){int sum = 0;for(int i=0; i<n; i++)sum = sum + i;return f(n/2) + f((n+1)/2) + sum;}A、O(n)B、O(nlongn)C、O(n^2)D、O(n^(3/2))7、进程从拥塞状态变为就绪状态是发生在( )A、分配给进程的时间片用完B、进程等待的事件发生C、进程被调度程序选中D、进程等待某一事件8、如果有多个中断同时发生,系统将根据中断优先级响应优先级最高的中断请求。
Google笔试题

Google面试题1.下面哪项不是链表优于数组的特点?A.方便删除B.方便插入C.长度可变D.存储空间小2.T(n)=25T(n/5)+n*n的时间复杂度?3.有一幢100层高的大楼,给你两个完全相同的玻璃围棋子。
假设从某一层开始,丢下玻璃棋子就会破碎。
那么怎么利用手中的两颗棋子,用一种什么样的最优策略,知道这个临界的层高呢?___________________________________________________ _________________[07.5.21]Google实习生招聘笔试题目发信站: 华南木棉BBS (T ue May 22 09:40:40 2007), 转信一、选择题1、定义{1, 2, ... n}*{1, 2, ... n}上的等价关系~(a, b)~(c, d)当且仅当a+b=c+d。
定义集合A(a, b) = {(x,y)|(x,y)~(a,b)},那么{1, 2, ... n}*{1, 2, ... n}上不同集合的数量为( )A、nB、2*n-1C、2*nD、n*n2、下面一段代码的输出是( )int a, b;int *x, *y;x = &a;y = &b;*x = 10;*y = *x;x = y;*x = 20;cout<<a<<' '<<b<<endl;A、10 20B、20 10C、10 10D、20 203、下面一段代码的输出结果是( )void f(char* c, char d){*c = *c +1;d = d+1;cout<<c<<d;}void main(){char a = 'A', b = 'a';f(&b, a);cout<<a<<b<<endl;}A、BaBaB、aBaBC、AbAbD、bBAb4、若二叉搜索树有三个节点,对应于三个不同的值A、B、C,这样的二叉搜索树共有多少种可能的构造?( )A、1B、2C、3D、4E、55、假设把整数关键码K散列到有N个槽的散列表,以下哪些散列函数是好的散列函数?( )1) h(k) = k / N;2) h(k) = 1;3) h(k) = k mod N;4) h(k) = (k + Random(N)) mod N, Random(N)返回一个0到N-1的整数A、1)B、2)C、3)D、4)E、3)和4)6、有如下递归函数f(n),其时间复杂度为( )int f(int n){int sum = 0;for(int i=0; i<n; i++)sum = sum + i;return f(n/2) + f((n+1)/2) + sum;}A、O(n)B、O(nlongn)C、O(n^2)D、O(n^(3/2))7、进程从拥塞状态变为就绪状态是发生在( )A、分配给进程的时间片用完B、进程等待的事件发生C、进程被调度程序选中D、进程等待某一事件8、如果有多个中断同时发生,系统将根据中断优先级响应优先级最高的中断请求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
谷歌2013校园招聘笔试题心得(附答案)昨天晚上去蹭了一下Google的招聘笔试。
其实是去打酱油的,主要是为了感受一下Google的出题风格和考试氛围,可以对将来找工作提供些参考。
回来之后本来想回忆一下题目的,结果发现braveheart89大大已经贴出了所有的题而且连选项都一字不差,记忆力真心佩服……以下就根据他写的题目稍微修正一下[1],然后随便说说好了。
(说的也不一定对,欢迎更正。
)考试是第一页需要填写个人信息,包括实习经历、获奖情况、工作地点意向(国内、国外还是两者皆可之类,反正对我无用啦-.-)然后就是一个半小时的答题,全部手写。
1、单项选择题1.1 如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少。
关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝文件的数据传输速率2.使用100M以太网,在局域网内拷贝大文件时网络上的数据传输速率3.使用一辆卡车拉1000块单块1TB装满数据的硬盘,以100km/h的速度从上海到天津(100km)一趟所等价的数据传输带宽4.使用电脑播放MP3,电脑的PCI总线到声卡的数据传输速率在通常情况下,关于这几个传输速率的排序正确的是:A.4<1<2<3B.1<4<2<3C.4<1<3<2D.1<4<3<21.2 对以下程序,正确的输出结果是#define SUB(x,y) x-y#define ACCESS_BEFORE(element,offset,value) *SUB(&element, offset) =valueint main(){int array[10]= {1,2,3,4,5,6,7,8,9,10};inti;ACCESS_BEFORE(array[5], 4, 6);printf("array: ");for (i=0; i<10; ++i){printf("%d", array[i]);}printf("\n");return (0);}A.array: 1 6 3 4 5 6 7 8 9 10B.array: 6 2 3 4 5 6 7 8 9 10C.程序可以正确编译连接,但是运行时会崩溃D.程序语法错误,编译不成功1.3 在区间[-2, 2]里任取两个实数,它们的和>1的概率是:A.3/8B.3/16C.9/32D.9/641.4 小组赛,每个小组有5支队伍,互相之间打单循环赛,胜一场3分,平一场1分,输一场不得分,小组前三名出线。
平分抽签。
问一个队最少拿几分就有理论上的出线希望:A.1B.2C.3D.41.5 用二进制来编码字符串“abcdabaa”,需要能够根据编码,解码回原来的字符串,最少需要多长的二进制字符串?A.12B.14C.18D.241.6 10个相同的糖果,分给三个人,每个人至少要得一个。
有多少种不同分法A.33B.34C.35D.361.7 下列程序段,循环体执行次数是:y=2while(y<=8)y=y+y;A.2B.16C.4D.31.8 下面哪种机制可以用来进行进程间通信?A.SocketB.PIPEC.SHARED MEMORYD.以上皆可1.9 下列关于编程优化的说法正确的是:A.使用编译器的优化选项(如-O3)后程序性能一定会获得提高B.循环展开得越多越彻底,程序的性能越好C.寄存器分配能够解决程序中的数据依赖问题D.现代主流C/C++编译器可以对简单的小函数进行自动Iinline1.10 一下程序是用来计算两个非负数之间的最大公约数:longlonggcd(long long x, long long y) {if( y==0) return 0;else return gcd (y, x%y);}我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为:A.O(1)B.O(logn)C.O(n)D.O(n^2)2、程序设计与算法(2.1,2.2为编程题,2.3为算法设计题,只需设计思路和关键步骤伪代码)2.1 写函数,输出前N个素数。
不需要考虑整数溢出问题,也不需要使用大数处理算法。
2.2 长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的swap,请设计并实现排序。
2.3 给定一个原串和目标串,能对源串进行如下操作:1.在给定位置插入一个字符2.替换任意字符3.删除任意字符要求写一个程序,返回最少的操作数,使得源串进行这些操作后等于目标串。
源串和目标串长度都小于2000。
——以下是我根据各种来源总结的参考答案:1.1 AUSB 2.0的理论传输极限是480Mbps[2],但是按照这个速率就没有选项可选了-.-,所以猜测应该认为是普通U盘写数据的6MB/s,即48Mbps;100M以太网的速率就是100Mbps;卡车拉硬盘,1000x1000x8/3600=2222Mbps,这个应该是最快的;MP3在256kbps码率下也平均只有1分钟2MB,所以不会超过0.3Mbps,所以一定是最慢的。
1.2 D这道题大家走出考场后争议非常大。
咱啥也不说,直接进mingw跑一下gcc:gcc提示的错误是“赋值号的左边操作数需要一个左值”。
其原因是调用宏的那句被预处理器替换成了:*&array[5]-4 =6;由于减号比赋值优先级高,因此先处理减号;由于减号返回一个数而不是合法的左值,所以编译报错。
1.3 C这道题我是蒙对的-.- 标准做法是先画出y=1-x的线,上侧阴影部分就是y>1-x,其所占比例为9/32:1.4 B这道题我从A开始凑胜负表,直到B凑出结果就OK了。
1.5 B这道题需要对abcd进行Huffman编码。
首先根据权值建立Huffman树,得到最优编码:a=0, b=10, c=110, d=111然后数一下就行了。
1.6 D这道题我是穷举的orz……一共这么几种情况:118,127,136,145;226,235,244;334;然后有数字重复的算3种排列,不重复的算6种排列,共计4×3+4×6=36种。
1.7 D这题很基本了。
1.8 D一般学过操作系统这门课的都会吧,而且个人觉得D这个选项的出现不符合Google风格。
1.9 D这题其实很好做,因为D肯定是对的,而且ABC的言论太绝对。
但如果一定要给出解释的话……A选项的优化只能针对代码本身,纯系统调用什么的是不会性能提升的(当然也不会下降),B选项我觉得是在并行优化方面,好的编译器可以从循环中发掘并行性,展开之后就不行了,C选项有点说不清。
消除数据依赖主要有两个方法,一种是SSA,即静态单赋值[3],这是通过对变量进行重命名实现的,严格的说应该叫“寄存器重命名”[4]而不是“寄存器分配”;另外一种是调换指令顺序,这种只要不是真相关(写后读,RAW)的话都可以消除掉,也不属于寄存器分配。
所以感觉不应该选这个。
1.10 B求最大公约数用的是辗转相除法(欧几里得算法),所以是O(logn)[5]。
2.1这题比较基本,而且很多企业的笔试都爱考类似的。
主要就是对尝试对数a进行质因数分解,最容易写的就是从2开始一直除到sqrt(a),性能提升一点就从2,3然后除奇数一直到sqrt(a)。
当然还可以优化一下,建立一个动态质数链表,将之前取到的所有质数加入表进行加速。
2.2这题我觉得除了重载一下swap函数然后用传统排序法之外也想不出什么高效的做法了。
而且要代码实现,时间紧迫也不由得你多想。
2.3这题个人觉得是这场笔试唯一拉区分度的题了(所以非科班出身的本人妥妥的死在这道题上),基于动态规划算法。
事实上就是写出LD算法的伪代码,[6]中有详细的描述。
考场里完全对这东东没概念,就随便写了点啥交掉了。
好吧,目送各位进面试的大牛顺利(你们的考验才刚刚开始什么的我会随便乱说吗)[1] 2013 google校园招聘笔试题. braveheart89的专栏./braveheart89/article/details/8074657[2] USB 2.0. 百度百科. /view/460899.htm[3] 编译器后端寄存器分配算法SSA(静态单一赋值法). 专栏./lm2302293/article/details/6791752[4] 寄存器重命名. 维基百科./zh/%E5%AF%84%E5%AD%98%E5%99%A8%E9%87%8D%E5%91%BD%E5%90%8D[5] 欧几里得算法的时间复杂度. 依然的博客./blog/static/16229419320105211170298/[6] 文本比较算法Ⅰ——LD算法. 万仓一黍./grenet/archive/2010/06/01/1748448.html。