一道google电话面试题
我一写这个题目,我估计别人看了,都以为是我的google面试,可惜的是,不是~ 我也想啊,可是,那得多努力才行~ 这是好久之前,我在互联网上看google的面经时看到的,当然,那个被面试的人很不幸,没答上来,最后是在google工程师的一步步提示下,才做出来了。 他(她)的面经的最后几句话的意思是,google是一个很有趣的公司,很欣赏这种一步步探索着解决问题的感觉~ 说我自己,我是那天看了,晚上一个人躺在床上仔细想,结果想了好长时间做出来。可是,“闻道有先后,术业有专攻”,我不觉得自己就是比他们差~ 好,说题目: 有一个楼梯,100级台阶,然后,你从最下面开始往上走。你的任意一步,可以跨2级台阶,也可以跨1级台阶。请问,从地面到第100级台阶,有多少种走法? 比方说,如果只是2级台阶,就只有两种走法,要么一步跨到顶,要么分2步,一步1级台阶。 解法:用S(n)表示当台阶数是n时的不同走法数目,那么,我们可以知道S(n)=S(n-1)+S(n-2),idea is: 考虑最后一步,最后一步,可以跨2级台阶,也可以跨1级台阶。如果是2级台阶,我们backtrack一下,就知道,子问题是:S(n-2);如果是1级台阶,我们backtrack一下,就知道,子问题是:S(n-1)。(我不知道我说清楚了没) 注意,因为S(2)=2, S(1)=1, 为了保持consistent,我们定义S(0)=1。这个定义S(0)要看情况定,这里定义为1,是因为S(0)+S(1)需要=S(2). 如果你是计算机专业的,你可能会发现,这个S(n)和Fibonacci number很像,是很像,但是,Fibonacci(0)=0, 所以,我们需要变动一下,最后的结果是:S(n)=Fibonacci(n+1). 然后,求解Fibonacci number是一个很常见的问题,如果你是计算机专业的,请不要告诉我,你准备用函数递归来做,因为那个是:exponential time, 所以,我们的策略是:dynamic programming, 这样,就可以在linear time将其解决。 但是,google工程师是不会满足linear time的,他们需要的是:O(lgn) time,至于这个时间复杂度是怎么得到的,你可以google一下怎么在O(lgn)求解Fibonacci即可。 注:维基百科英文版肯定有~不过,我就不check了~ |
一道google电话面试题相关推荐
- 每个人都应该了解的金融小知识 -- 利率计算 (含一道码农面试题)
本文包含每个人都应该了解的金融小知识 -- 利率的计算方法, 以及在推导过程中衍生出的一道码农面试题. 欢迎大家留言讨论(本文首发于微信公众号 "唐磊Coder"(微信ID: ta ...
- 一道指针压轴笔试题讲解 (进阶指针必看)
今天我来给大家讲解一道指针压轴笔试题,同时也是进阶指针知识必会的一道题.相信大家在认真梳理清楚这道题后,对指针的知识了解定会更上一层楼 ~ 话不多说,上题目 : 请问程序输出结果是什么 ? 相信大家一 ...
- Google的面试题长啥样
转载自 Google的面试题长啥样 本文翻译自Google工程师/面试官Alex Golec的文章:Google Interview Questions Deconstructed: The Kni ...
- python编辑距离正则匹配_详解一道腾讯面试题:编辑距离
原标题:详解一道腾讯面试题:编辑距离 来自公众号:labuladong 预计阅读时间:8 分钟 前几天在网上看到一份鹅场的面试题,算法部分大半是动态规划,最后一题就是写一个计算编辑距离的函数,今天就专 ...
- 解读一道微软经典面试题:海盗分宝石
这是微软的一道经典的试题,大约是2008年左右的时候出的.这个题目虽然已经过了十多年了,但是仍然是一道非常经典的试题,值时不时拿出来看一看. 问题描述 五个海盗抢到了100颗宝石.他们决定按以下的规则 ...
- python竞赛试题及答案_用Python来解一道华罗庚数学竞赛试题
最近浏览到一道华罗庚数学竞赛试题,觉得很有意思,题目是这样的: x,y都是正整数,且满足x+y+xy=54,求x+y的值. 这道题可以用数学的常规解法,即分解因式来做,其实我们也可以用python来编 ...
- 一道SQL语句面试题,关于group by
一道SQL语句面试题,关于group by 表内容:2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-1 ...
- 一道SQL语句面试题
最近面试了几个人,给他们出了一道SQL语句面试题,但是反应效果不太理想.题目如下: 表scores有四个字段,学生stu.班级class.学院institute.分数score, 要求返回:班级考试人 ...
- 软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!
软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!为什么这么说呢?是因为你们的思路有着天壤之别,来看吧: 相信不少朋友在笔试的时候都遇到过测试用例设计的笔试题.通常是一个登陆页面,上面有用户名,密 ...
最新文章
- 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)
- JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_5_使用LUA脚本写游戏
- 原来女孩要的不是真爱,而是关爱...
- python3 获取文件夹中的文件列表
- [2015-10-28]Angularjs-----数据获取,关联
- 5 SU01给用户增加权限
- 让Ubuntu更多的使用物理内存
- RelativeLayout相对布局
- java适应性自旋锁_深夜!小胖问我,什么是自旋锁?怎么使用?适用场景是啥?...
- java biz层创建代码_BIZ层调试方法
- Q126:PBRT-V3,VolPathIntegrator(体渲染)流程概述
- Lodop打印旋转180度 倒着打
- mvn package时,报错A required class is missing: com/thoughtworks/xstream/io/HierarchicalStreamDriver...
- ListView更新的几种方法
- 前十大编程语言你会几种?
- 牛客网Verilog快速入门题目收获——异步复位的串联T触发器(VL2)
- 国外android逆向的论坛,初探android逆向
- wireshark出现rst的原因_多次RST以及不同场景下的RST报文的差异
- java金额小写转大写金额_Java金额大小写的转换方法
- 备忘录莫名其妙的没了_华为手机总是多出莫名其妙的照片?一键找到源头,教你彻底删除...