OPPO 0315 c卷 笔试题

20 道选择题+3 道编程题

选择题:Linux命令,try catch finally异常处理,Mysql语句,HTTP,CPP代码题,Java代码题等(CPP 选手表示不会Java)

编程题:
1. 我们有一个大小为  n  的数组  a1, a2, ..., an 。我们可以选择一个元素  ai ,将其变成它的相反数  ai → (-1) × ai 。如果此时数组的和在区间  0, t  内,那么这个选择是“好的”。我们的目标是计算有多少种选择是“好的”。
2. 题目要求我们计算删除数组中每个元素后的 MEX 值。MEX 的定义是数组中未出现的最小非负整数。例如:
数组  0, 1, 2  的 MEX 是  3 ,因为  3  是未出现的最小#非负整数。
数组  1, 2, 3  的 MEX 是  0 ,因为  0  是未出现的最小非负整数。
我们需要为数组中的每个元素  ai ,计算删除  ai  后剩余数组的 MEX 值,并输出结果。
3. 给定一个长度为 n 的字符串 s,其中某些位置可能为问号(?),问号可以被替换为任意数字。求所有可能的替换方式中,使得 s 表示的数字是 3 的倍数的个数。结果需要对 10^9 + 7 取模。注意,不能有前导零(例如,03 不是有效的数字)。#OPPO笔试# #笔试# #26届暑期实习#
全部评论
笔试三道a了,上午一看复筛不通过
3 回复 分享
发布于 03-17 14:47 辽宁
第二题: 先计算原始数组的 MEX 值,就用set去重,从mex=0开始找第一个没出现的就是了,记为 origin_mex 。如果删除某个元素后,剩余数组的 MEX 值可能小于或等于origin_mex 。使用一个哈希表统计数组中每个元素的次数。然后遍历数组nums,判断当前元素值是否小于origin_mex且只出现了一次,那么删掉该元素后数组的新mex就是它自己,同理就能得到全部答案了。
1 回复 分享
发布于 03-16 08:59 江苏
第一题: 先计算原始数组元素和sum ,遍历数组,对于每个元素  ai ,计算将其变为相反数后的新和  new_sum = sum - ai + (-ai) = sum - 2 * ai ,然后判断newsum是否在区间内:如果  0 ≤ new_sum ≤ t ,则这个选择是“好的”,遍历完所有元素后,计算满足条件的“好的”选择数量。
点赞 回复 分享
发布于 03-16 08:52 江苏
第三题: 使用动态规划来记录当前字符串前缀的余数(模 3 的结果)。对于每个字符,如果是数字,则更新余数;如果是  ? ,则枚举所有可能的数字(0-9),并更新余数。设 dp[i][r] 表示前 i 个字符的余数为 r 的方案数。对于每个字符,更新 dp[i][r]的值。还需要排除前导零的情况,如果字符串的第一个字符是 ?,则不能替换为 0 。最终结果存储在 dp[n][0],表示整个字符串的模3余数为 0 (即3的倍数)的方案数。
点赞 回复 分享
发布于 03-16 09:04 江苏
复筛算是笔试通过了吗
点赞 回复 分享
发布于 03-16 14:49 福建
复筛挂了,逆天
点赞 回复 分享
发布于 03-17 10:22 江苏

相关推荐

评论
7
11
分享

创作者周榜

更多
牛客网
牛客企业服务