美团 NLP算法岗面试题精选,附答案

共 1515字,需浏览 4分钟

 ·

2021-06-08 15:51

↑↑↑点击上方蓝字,回复资料,10个G的惊喜

文 | 七月在线 编 | 小七

目录

FIGHTING


问题 1:怎么处理数据不平衡

问题 2:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

问题 3:连续子数组的最大乘积

问题 4:最大子数组

问题 5:一个硬币正面概率p 那么抛到第几次抛正面期望


问题1:怎么处理数据不平衡


常用于解决数据不平衡的方法:

欠采样:从样本较多的类中再抽取,仅保留这些样本点的一部分;

过采样:复制少数类中的一些点,以增加其基数;

生成合成数据:从少数类创建新的合成点,以增加其基数。

添加额外特征:除了重采样外,我们还可以在数据集中添加一个或多个其他特征,使数据集更加丰富,这样我们可能获得更好的准确率结果。


问题2:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

https://leetcode-cn.com/problems/reverse-linked-list/


义两个节点cur=None和pre=head


改变节点方向让pre的next指向cur,实现一次局部反转



cur和pre向前移动一个位置


循环交换前进,直至pre为空,遍历结束,完成反转,此时cur节点为开始节head;

参考代码:



问题3:连续子数组的最大乘积

https://leetcode-cn.com/problems/maximum-product-subarray/

思路:

遍历数组时计算当前最大值、最小值,不断更新

当前最大值为 ans_max = max(ans_max * nums[i], nums[i])

当前最小值为 ans_min = min(ans_min * nums[i], nums[i])

由于存在负数,那么会导致最大的变最小的,最小的变最大的。

当前最大值为 ans_max = max(ans_min * nums[i], nums[i])

当前最小值为 ans_min = min(ans_max * nums[i], nums[i])

参考代码:


问题4:最大子数组

https://leetcode-cn.com/problems/maximum-subarray/description/


解题思路:

遍历数组,遍历的时候记录两个值:当前子数组的和 tmpSum,最大值res




问题5:一个硬币正面概率p 那么抛到第几次抛正面期望

硬币游戏,如果在连续抛出三次正面之前不要停下来,那么我们总计抛硬币的期望次数是多少
假设期望是x
假设第一抛是反面,那么就浪费了一步,平均一共需要x+1步(概率是1/2)
假设第一抛是正面,在此基础上如果第二抛是反面,又浪费了,平均一共需要x+2步 (概率是1/4)
在此基础上如果第二抛是正面
假设第三抛反面,浪费,平均一共x+3步(概率是1/8)
假设第三抛正面,完成,只用了3步(概率是1/8)
所以x的期望即x=(1/2)(x+1)+(1/4)(x+2)+(1/8)(x+3)+(1/8)*3
解得x=14

也可以加一下老胡的微信
围观朋友圈~~~


推荐阅读

(点击标题可跳转阅读)

微软这个太强了

人工智能有多智障?

在公司内网搭建 pip 镜像站

【收藏】最全的Python常用标准库及第三方库

为什么美国学生学的数学比我们简单,却能做出很牛逼的东西?

老铁,三连支持一下,好吗?↓↓↓

浏览 76
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报