美文网首页Python
小编亲身经历,面试35W的AI互联网大厂,现场手撕一道经典的算法

小编亲身经历,面试35W的AI互联网大厂,现场手撕一道经典的算法

作者: 菜鸟学python | 来源:发表于2020-10-14 13:18 被阅读0次

    今年的就业形式虽然非常的严峻,但是仍旧有着不少的机会,小编本身是做深度学习的算法的,虽然本身的水平可能比较差,但是也有幸得到了一个AI互联网大厂的面试资格,薪资待遇什么的还是很好的。

    但是要求也是很高的,面试当天就是高强度的4个小时面试。这其中当然是少不了手撕代码,小编今天就带着最新鲜的面试题,跟大家一起分享。

    01.题目引入-基础版

    手撕代码是第二个面试官在面试最后提出的。开始的基础题目就是常见的爬楼梯问题。

    题目:小明要上楼,他一次只能上一个台阶或者两个台阶,问他上N阶台阶有多少种方法呢

    面对这个问题,想必有过《剑指offer》或者力扣刷题经验的伙伴们,肯定暗自窃喜,这问题不就是简单的动态规划问题或者利用递归方式进行解决嘛!确实,这道题,可以按照以下的思路进行解决。 入下图所示:
    • 当N=1,也就是只需要爬一个台阶时,那么只有1种方法;

    • 当N=2时,此时就有两种方法,要不就是每次上一个台阶,也就是1、1,要不就是直接上两个台阶;

    • 那如果N=3时,此时,小明只可能从第1个台阶直接走两步到第三个台阶,或者从第二个台阶,直接走一步上来;

    • 对于N=4的情况,同样,小明只能从第三个台阶走一步或者是从第二个台阶走两步上来;

    • 然后对于N,就是从第N-1个台阶走一步或者是从N-2个台阶走两步上来。

    我们总结成公式的表达方式就是f(N) = f(N-1) + f(N-2)。而前面我们求出f(1) = 1,f(2) = 2。这是不是就很简单了,我们直观上就直接可以利用递归来求取了。例如:

    f(5) = f(4) + f(3),而f(4) = f(3) + f(2) ,而f(3) = f(2) +f(1) = 3。于是可以求出f(5) = 8。也就是说小明跳到第5个台阶一共有8种方法。如果小伙伴不信的话,可以自己去跳以下试试。当然,这里小编也给出了8种不同的方法:

    1、1、1、1、1

    1、1、1、2

    1、1、2、1

    1、2、1、1

    2、1、1、1

    1、2、2

    2、1、2

    2、2、1

    至于程序,那也是很简单的,小编直接给出动态规划的方法程序,因为当N很大时,递归会造成很多的计算浪费,同时时间消耗也比较大。


    02.进阶版-花费最少的力气爬楼梯

    可能时面试官觉得我做的太轻松了,于是他就进一步问了一个问题,如何花费最少的力气来爬楼梯。

    题目描述是这样的。基础问题不变,小明还是每次只能上一步或者是两步,但是现在的问题是每上一个楼梯都会消耗一定的能量,称之为cost,例如cost = [1, 100, 1, 1, 1, 100, 1, 1, 100, 1] ,如下图所示:

    小明分别走1、3、5、7、8、10号台阶,总的能量损失为6。用最小的能量登上了所有的台阶,那我们又如何分析这道题呢,下面小编带大家一步一步仔细分析。

    03.手撕面试题

    首先,我们用dp数组来保存经过每个台阶的最小能量的损耗。例如,dp[0]表示上0个台阶能量损耗为0,那么dp[1] = 1,而dp[2]为100;

    然后,小明每次只能上一个或者两个台阶,如果一个一个上台阶的话,那么dp[2]=1+100=101 > 100。所以就一次上两个就是100;

    接着分析,那么dp[3]为多少呢,我们知道,第三个台阶可以从第1个台阶上两步走到3,也可以从第二个台阶上一个台阶来到第三个台阶;

    最后,dp[3] = min(dp[1], dp[2]) + cost[2]。我们递推可以知道dp[N] = min(dp[N-1], dp[N-2]) + cost[N-1]。有了这个状态转移公式,我们便可以编写程序了。


    上述程序中,我们对cost的长度进行判断,如果小于1,那么就返回0,如果小于3,那么就返回cost[-1]。否则的话就按照我们上面的状态转移公式进行计算即可。返回最后两个台阶数值的最小值即可。结果也证明了我们的结果正确性。

    以上就是小编在面试的时候,遇到的真实的面试 题目。不得不说,对于基础的coding能力还是非常考验的,大家需要在平时多多的刷题,多多积累,才能够从容的分析问题,并得到最终的结果。

    如果你觉得本文有帮助,欢迎留言区给个三连!

    目前wx搜索Python 【菜鸟学Python】排第二,汇聚了30万Python爱好者,累计原创近400篇趣味干货(爬虫,数据分析,算法,面试指南,原创趣味实战,Python游戏,机器学习),欢迎一起学Python,交流指正。

    相关文章

      网友评论

        本文标题:小编亲身经历,面试35W的AI互联网大厂,现场手撕一道经典的算法

        本文链接:https://www.haomeiwen.com/subject/pqyipktx.html