我一写这个题目,我估计别人看了,都以为是我的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电话面试题相关推荐

  1. 每个人都应该了解的金融小知识 -- 利率计算 (含一道码农面试题)

    本文包含每个人都应该了解的金融小知识 -- 利率的计算方法, 以及在推导过程中衍生出的一道码农面试题. 欢迎大家留言讨论(本文首发于微信公众号 "唐磊Coder"(微信ID: ta ...

  2. 一道指针压轴笔试题讲解 (进阶指针必看)

    今天我来给大家讲解一道指针压轴笔试题,同时也是进阶指针知识必会的一道题.相信大家在认真梳理清楚这道题后,对指针的知识了解定会更上一层楼 ~ 话不多说,上题目 : 请问程序输出结果是什么 ? 相信大家一 ...

  3. Google的面试题长啥样

    转载自  Google的面试题长啥样 本文翻译自Google工程师/面试官Alex Golec的文章:Google Interview Questions Deconstructed: The Kni ...

  4. python编辑距离正则匹配_详解一道腾讯面试题:编辑距离

    原标题:详解一道腾讯面试题:编辑距离 来自公众号:labuladong 预计阅读时间:8 分钟 前几天在网上看到一份鹅场的面试题,算法部分大半是动态规划,最后一题就是写一个计算编辑距离的函数,今天就专 ...

  5. 解读一道微软经典面试题:海盗分宝石

    这是微软的一道经典的试题,大约是2008年左右的时候出的.这个题目虽然已经过了十多年了,但是仍然是一道非常经典的试题,值时不时拿出来看一看. 问题描述 五个海盗抢到了100颗宝石.他们决定按以下的规则 ...

  6. python竞赛试题及答案_用Python来解一道华罗庚数学竞赛试题

    最近浏览到一道华罗庚数学竞赛试题,觉得很有意思,题目是这样的: x,y都是正整数,且满足x+y+xy=54,求x+y的值. 这道题可以用数学的常规解法,即分解因式来做,其实我们也可以用python来编 ...

  7. 一道SQL语句面试题,关于group by

    一道SQL语句面试题,关于group by 表内容:2005-05-09 胜 2005-05-09 胜 2005-05-09 负 2005-05-09 负 2005-05-10 胜 2005-05-1 ...

  8. 一道SQL语句面试题

    最近面试了几个人,给他们出了一道SQL语句面试题,但是反应效果不太理想.题目如下: 表scores有四个字段,学生stu.班级class.学院institute.分数score, 要求返回:班级考试人 ...

  9. 软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!

    软件测试菜鸟还是大神,一道测试用例设计笔试题就能测出!为什么这么说呢?是因为你们的思路有着天壤之别,来看吧: 相信不少朋友在笔试的时候都遇到过测试用例设计的笔试题.通常是一个登陆页面,上面有用户名,密 ...

最新文章

  1. 用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)
  2. JAVA游戏编程之三----j2me 手机游戏入门开发--俄罗斯方块_5_使用LUA脚本写游戏
  3. 原来女孩要的不是真爱,而是关爱...
  4. python3 获取文件夹中的文件列表
  5. [2015-10-28]Angularjs-----数据获取,关联
  6. 5 SU01给用户增加权限
  7. 让Ubuntu更多的使用物理内存
  8. RelativeLayout相对布局
  9. java适应性自旋锁_深夜!小胖问我,什么是自旋锁?怎么使用?适用场景是啥?...
  10. java biz层创建代码_BIZ层调试方法
  11. Q126:PBRT-V3,VolPathIntegrator(体渲染)流程概述
  12. Lodop打印旋转180度 倒着打
  13. mvn package时,报错A required class is missing: com/thoughtworks/xstream/io/HierarchicalStreamDriver...
  14. ListView更新的几种方法
  15. 前十大编程语言你会几种?
  16. 牛客网Verilog快速入门题目收获——异步复位的串联T触发器(VL2)
  17. 国外android逆向的论坛,初探android逆向
  18. wireshark出现rst的原因_多次RST以及不同场景下的RST报文的差异
  19. java金额小写转大写金额_Java金额大小写的转换方法
  20. 备忘录莫名其妙的没了_华为手机总是多出莫名其妙的照片?一键找到源头,教你彻底删除...

热门文章

  1. 零基础语法入门第第二十三讲 动词的用法总结
  2. 大型网站技术架构 读书笔记3 架构师
  3. 在vue项目中使用Antv-f2的小案例
  4. 九种卫星地图的快速比较和选择方法
  5. 神经网络——bias
  6. laravel php配置,配置 - Configuration
  7. 云原生爱好者周刊:为 DevOps 流水线准备的 macOS 虚拟化工具
  8. 大数 组合数C(n,m)算法
  9. 《赢在中国蓝天碧水间》观后感
  10. influxDb数据备份