7.23 小红书提前批笔试 后端-C++

2小时,单选+不定项选择+3道编程。

选择题考点包括dp、继承、信号量、KMP、linux系统、HTTP状态码、循环队列、操作符重载等。

编程题:

  • 第一题

题意:给出n(<1e5)和k。构造包含n个数的正整数数组,满足数组的最大公约数为k,求数组总和的最小值。

题解:构造数组形如【k,2k,...,nk】即可。

  • 第二题

题意:给出线段的长度n(<1e9)、区间的数量m(<1e5)、截取的长度k(<1e9),以及m个区间(1<=L[i],R[i]<=1e9,保证区间不相交)。用k尽量覆盖更多的区间总长度,求最大覆盖的值。

题解:前缀和+滑动窗口 首先,对于最大的结果,一定存在一个截取窗口在其右边界与某个区间的R[i]重合时满足。可以想象一下,对于一个窗口左右移动时发生的变化。那么从左向右枚举区间,维护窗口左端所在的区间编号,计算当下最大值更新答案。复杂度为O(m)。

  • 第三题

题意:给出一个n个数的数组(n<2e5,-1e9<a[i]<1e9)和一个数x(-1e9<x<1e9)。可以把数组中某个值改为x,也可以不修改。求所有连续子数组中总和的最大值。

题解:前缀和 首先对数组求一遍前缀和sum,那么子数组[l, r]的和即为sum[R] - sum[L-1],再求前缀最大值数组L和后缀最大值数组R(L[i]=max(sum[1,...,i]),R[i]=max(sum[i,...,n]))。先考虑不使用x,那么枚举子数组包含i,ans = max(R[i] - L[i - 1]),即i右侧的最大sum值减去i左侧的最小sum值。接着考虑加入x的影响。如果把a[i]改为x,那么sum[i~n]的值都会增加(x - a[i]),R[i]的值也会增加(x - a[i])。那么对于ans的计算稍加修改,ans = max(R[i] - L[i - 1] + x - a[i])。复杂度为O(n)。

————————————————————————

update:约了8.6面试,不能改时间,有点烦。

#小红书提前批##笔试#
全部评论
明天笔试,也是后端c++,有点紧张,大佬有什么推荐的题可以临时刷一刷的吗
点赞 回复 分享
发布于 2023-08-05 20:24 广东
黄佬!
点赞 回复 分享
发布于 2023-07-24 19:20 浙江
很多岗感觉都是一样的题
点赞 回复 分享
发布于 2023-07-24 00:52 上海
第一题我怎么只过了82
点赞 回复 分享
发布于 2023-07-23 21:22 上海

相关推荐

不愿透露姓名的神秘牛友
06-20 18:18
是不是意味着秋招就完蛋了
花不开柳成荫:如果你是Java,是的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 18:28
点赞 评论 收藏
分享
评论
12
49
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务