2021年6月22日,VIVO2022届提前批数据挖掘一面

七月在线实验室

共 1235字,需浏览 3分钟

 ·

2021-08-01 10:16

文 | 七月在线
编 | 小七


目录

FIGHTING


问题1:输入一个数组,统计数组中有多少个数是7的倍数或者含有数字7

问题2:0-1背包问题面试题2道


问题1:输入一个数组,统计数组中有多少个数是7的倍数或者含有数字7


判断一个数是否是7的倍数可以直接用取余的方法,判断一个数中是否含有数字7,这里提供两种方法:一种是将数字转换成字符串,用 in 进行判断;另一种是将数字转换成字符串,用 find 方法,如果不包含会返回 -1。

代码如下:


问题2:0-1背包问题面试题2道

题目描述:给定物品的重量weights=[1, 2, 5, 6, 7] ,对应的价值values=[1, 6, 18, 22, 28] , 背包能装的最大重量为capicity=11。问:我们用这个背包装什么物品能获得最大价值?  注意:每件物品只有一件。并且最终重量不能超过背包所能承载的重量。


本题解析参考:https://www.pianshen.com/article/2073277310/


分析:


首先,说明一下,本题采用动态规划, 因为问题的本身含最优子结构。我们先给出转态转移方程:

c(i, w)表示包容量为w时,考虑前i个物品所能获得的最大价值。。i表示第i个物品,w示包容量


第一种情况:当前物品的重量超过了包的承载量,显然装不上,那它当前的最大价值就是原有包中的价值(不装这个物品时的最大价值)。


第二种情况︰当前物品的重量没有包承载量大。则说明当前这个物品可以装进去。那我们就得考虑了︰装这个物品价值大还是不装这个物品价值大?从两种情况中选最大的。



右下角的40,就是我们所能获得的最大价值

接着,我们还需要输出获得最大价值的时候,我们拿了什么物品。



从右下角的40开始,背包容量为11,由于40与上一行的40相等,说明我们没有装第五个物品(因为当背包容量为11,装第四个物品的时候,价值已经到达了40)。紧接着,在背包容量为11时,对应第三个物品,最大价值是25,所以,我们装了第四个物品。此时,我们的背包容量变为W-w4即:11-6=5。所以,对于第三个物品,我们直接考虑在背包容量为5的时候,可以看出价值是18,考虑有没有装第三个?因为背包容量为5时,第二个物品所对应的最大价值为7.所以我们装了第三个物品。接在:W剩– w3 = 5-5 =0。我们就可以得出背包中装了第三个和第四个物品。


代码实现:





推荐阅读  点击标题可跳转

1、TP-LINK提前批(图像算法岗)面试题...

2、好未来暑期算法实习面试题5道...

3、好未来算法实习面试题8道...

4、百度机器学习/NLP算法面试题8道

阅读原文”了解更多!

浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

举报