深思考人工智能机器人科技(北京)计算机视觉算法实习生机试-2020年10月

深思考人工智能机器人科技(北京)计算机视觉算法实习生机试-2020年10月

果真是截止目前为止遇到的体验最好的一个公司的面试!
下午两点前5分钟通知我2点机试,我当时还穿着睡衣呢,急忙出房间去换身衣服面试,没想到门锁上了,自己钥匙没带,去楼下招人开门才继续开始的面试。

小姐姐人很好,发给了我4道题。

第一道题:

我的思路:

思路:创建迪瓦读书数,此数列的规律是后一个数是前两个数的和,最后找这个数列中与输入的D最近的一个数即可。思路是对的,代码好像还可以优化些,这道题先不贴代码啦!

第二道题:

我把我的思路讲给面试官听,有点小错误,她一步一步引导我,要注意边界条件等,告诉我我的思考方向哪里还有点问题,最后将这个题的思路想了出来,小姐姐说基本对啦。
解决方案主要就是贪心+判断临界条件

class Solution(object):
    def main(self):
        N = int(input())
        S = input().split()
        fuel_num = 0
        for i in range(len(S)):
            S[i] = int(S[i])
        if S[0] == 0:
            return 0
        else:
            ennegy = S[0]
            for i in range(1, len(S)):
                max_stop_index = i+1
                max_stop = S[max_stop_index]
                zero_stop_num = 0
                for j in range(i+1, i+ennegy+1):
                    if(S[j] == 0):
                        zero_stop_num += 1
                        if(zero_stop_num > ennegy):
                            return 0
                        elif S[j] > S[max_stop_index]:
                            max_stop_index = j
                ennegy = ennegy - (max_stop_index - i) + S[max_stop_index]
                i = i + max_stop_index
                fuel_num += 1
                print(fuel_num)
                return fuel_num
solo = Solution()
res = solo.main()
print(res)

第三道题:

她说难度是递增的,但我觉得这道题比第二题简单呀,代码如下:

import numpy as np
h = [1,2,3,4,5]
def findLeftSide(i):
    if(h[i-1] >= h[i]):
        findLeftSide(i-1)
    else:
        return i
def findRightSide():
    if (h[i + 1] >= h[i]):
        findRightSide(i + 1)
    else:
        return i
h_sorted = np.array(list(h).sort())
print(h_sorted)
area = 0
for i in h_sorted:
    h_index = h.index(i)
    width = findRightSide(i) - findLeftSide(i)
    area = max(h[i] * width, area)
print(area)

她让我等通知,这次机试也是终面啦!希望能加入这个技术很好的大家庭!

简单问题关注我后可以帮忙解答,

祝关注+点赞的小可爱找工作顺利,获得心仪的offer

猜你喜欢

转载自blog.csdn.net/qq_40092110/article/details/109145274