深思考人工智能机器人科技(北京)计算机视觉算法实习生机试-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