拼多多0922笔试
第一题
给长度为n的数组ai,判断是否可以构建另一个长度为n的数组bi,使得对任意ai,都存
tai = bj - bk, 1<=j,k<=n。
这题不会做的话可以骗分,如果ai里有数字相同或者有0,直接输出yes,能过55。
其实可以考虑bi的第一个数字为0,后面计算的时候会发现只需要ai的子序列和有重复值就可以了。具体的,可以参考力扣子集题目,获取所有的子集,判断是否有重复值。
第二题
排序题
n个字符串,字符串里如果有PDD,则应该排在前面,其余规则遵循字典序大小,求排序后的前m个字符串。
自定义排序函数,sort的时候传入即可。
第三题
从长度为n的数组中删除两个数字,使得删除数字后的数组平均值和原来的一样,问有多少种删除方法。
假设原来的总和为T,那么T/ n = (T-x) / (n-2),计算得到删除的两个数字和为2T / n
问题简化为从原数组中找两个数,使得和为2T / n,用哈希表,一次便利即可。
第四题
一个数组,表示第i天的汉堡价格,每次买汉堡可以拿到等值的积分,100积分自动换成免单券,免单券有3天有效期,问n天都吃上汉堡的最小价格。
这题dp不知道咋做,所以用了记忆化搜索,过了28%,结果还是超时了,不知道咋整。
每次状态有当前天数、积分、优惠券数量和过期时间,每次买的时候可以不用优惠券也可以用优惠券买,用记忆化搜索往下搜,但是超时。
给长度为n的数组ai,判断是否可以构建另一个长度为n的数组bi,使得对任意ai,都存
tai = bj - bk, 1<=j,k<=n。
这题不会做的话可以骗分,如果ai里有数字相同或者有0,直接输出yes,能过55。
其实可以考虑bi的第一个数字为0,后面计算的时候会发现只需要ai的子序列和有重复值就可以了。具体的,可以参考力扣子集题目,获取所有的子集,判断是否有重复值。
第二题
排序题
n个字符串,字符串里如果有PDD,则应该排在前面,其余规则遵循字典序大小,求排序后的前m个字符串。
自定义排序函数,sort的时候传入即可。
第三题
从长度为n的数组中删除两个数字,使得删除数字后的数组平均值和原来的一样,问有多少种删除方法。
假设原来的总和为T,那么T/ n = (T-x) / (n-2),计算得到删除的两个数字和为2T / n
问题简化为从原数组中找两个数,使得和为2T / n,用哈希表,一次便利即可。
第四题
一个数组,表示第i天的汉堡价格,每次买汉堡可以拿到等值的积分,100积分自动换成免单券,免单券有3天有效期,问n天都吃上汉堡的最小价格。
这题dp不知道咋做,所以用了记忆化搜索,过了28%,结果还是超时了,不知道咋整。
每次状态有当前天数、积分、优惠券数量和过期时间,每次买的时候可以不用优惠券也可以用优惠券买,用记忆化搜索往下搜,但是超时。
全部评论
记忆化搜索状态是怎么存的呢?
佬第一题有点迷糊,为啥子序列和有相同的,就能说明成立呢
相关推荐
11-07 14:10
东北大学 Java 点赞 评论 收藏
分享
10-25 14:24
南阳理工学院 数据分析师 点赞 评论 收藏
分享
11-02 03:17
陕西理工大学 Java 点赞 评论 收藏
分享