JD 笔试 0927 大数据开发

#数据人的面试交流地##数据开发##我的秋招日记#选择题 * 30
有线代和概率论什么的,大一的我直接游龙,现在的我。。。。。。

求大佬路过给点建议 and 求赞~

编程题 * 2

T1. 给定长度为n的数组a,ai表示第i只袜子颜色的编号

问:只有不同颜色袜子能配对,最后剩几只袜子不能配对?

T2. 给定长度分别为n和m的数组a, b
ai表示第i个商品种类编号
bj表示第j种商品最少需要的数量

问:最短子区间满足对于每一种商品的数量都满足要求的区间长度

思路:

T1. 贪心
显然,只有一种袜子特别多的时候,才会剩下大量不能配队的袜子
然后考虑当所有袜子都“比较少”的情况,显然可以“互相配对”
最后考虑是否剩一个

T2. 滑窗
先枚举R作为右边界
定义remains = sum(b[1..j])  (从1开始下标,卡了我一下)
对于第R个商品,当且仅当curr[a[R]] < b[a[R]] 即现有的这种商品数量不足时
remains--

判断跑完while后是否满足要求,即remains == 0
否则输出-1

然后开始滑动窗口,先缩L,当且仅当curr[a[L]] >= b[a[L]] + 1即这种商品的数量有富余时
curr[a[L]] --
L++

然后统计答案,输出最小值即可

#我的秋招日记##应届生第一份工作最好去大厂吗?##京东##秋招白月光##京东求职进展汇总#
全部评论
PS: T2的a[i]可能 > m 等价于完全不需要此种商品 可以在读数时判断 if a[i] > m then a[i] = 0 因为bj数组下标从1开始,所以b[0] = 0很方便 卡了我好久
1 回复 分享
发布于 09-27 21:13 澳大利亚

相关推荐

评论
1
收藏
分享

创作者周榜

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