京东秋招0809真题分享

#牛客AI配图神器##秋招笔面试记录#

------------------------------------

题目一:

题目大意:
箱子上有 n (1 <= k <= n <= 5e4) 个按钮,每个按钮上的数字在 1 到 k 之间。你需要按顺序选择按钮,形成一个长度为 k 的子序列,要求这个子序列包含 1 到 k 每个数字各一次,并且是所有可能方案中字典序最小的。

解法思路:
这是一个经典的单调栈问题。核心是贪心思想,遍历数字序列,用一个栈来维护当前最优的子序列。当遇到一个新数字时,如果它比栈顶数字小,并且栈顶数字在后续序列中还会出现,那么就可以将栈顶数字弹出(相当于“反悔”),换入当前这个更小的数字,以获得更优的字典序。通过一个计数数组来记录每个数字的剩余出现次数,以判断是否可以安全地弹出栈顶。

------------------------------------

题目二:

题目大意:
给定一个长度为 n (1 <= n <= 100) 的01编码带,以及 m (1 <= m <= 6) 个需要验证的非负整数 (0 <= a_i < 1024)。你需要判断,这 m 个整数各自的二进制表示(不含前导零)能否在编码带中找到对应的、互不重叠的连续片段。(T 组数据, 1 <= T <= 20)

解法思路:
由于需要验证的数字数量 m 非常小,这指向了搜索算法。首先,预处理出每个数字的二进制字符串,并在编码带中找到它所有可能的匹配位置。然后,使用深度优先搜索(DFS)来为这 m 个数字分配匹配区间。搜索过程中,用一个布尔数组或位集记录编码带上已被占用的位置,确保新分配的区间不与之前的重叠。一个重要的优化是,优先为匹配位置选择最少的数字进行搜索,这样可以更快地剪枝,提高效率。
全部评论

相关推荐

------------------------------------第一题题目大意:年初有&nbsp;n&nbsp;(1&nbsp;&lt;=&nbsp;n&nbsp;&lt;=&nbsp;10^6)&nbsp;本书需要整理。平时每个月能整理&nbsp;m&nbsp;(1&nbsp;&lt;=&nbsp;m&nbsp;&lt;=&nbsp;n)&nbsp;本。每年从第&nbsp;p&nbsp;(1&nbsp;&lt;=&nbsp;p&nbsp;&lt;=&nbsp;12)&nbsp;个月开始,有连续&nbsp;q&nbsp;(1&nbsp;&lt;=&nbsp;q&nbsp;&lt;=&nbsp;13-p)&nbsp;个月的忙碌期,忙碌期内每月能整理&nbsp;2*m&nbsp;本。请问整理完所有图书需要多少个月?解法思路:这是一个直接的模拟题。可以设置一个循环,按月推进。在循环中,维护当前是几月份,并根据月份判断是否处于忙碌期&nbsp;[p,&nbsp;p+q-1]&nbsp;内。根据是否忙碌,从总任务量&nbsp;n&nbsp;中减去&nbsp;m&nbsp;或&nbsp;2*m,同时月份计数器加一。当月份超过12时,重置为1,直到任务量小于等于0为止。------------------------------------第二题题目大意:一个城市有&nbsp;n&nbsp;(2&nbsp;&lt;=&nbsp;n&nbsp;&lt;=&nbsp;2e5)&nbsp;个节点,由&nbsp;n-1&nbsp;条边连接成一棵树。每个节点有一个初始安全标识:'s'(安全),&nbsp;'d'(危险),&nbsp;或&nbsp;'?'(未分类)。一个安全的网络要求任意相连的两个节点标识必须不同(只能是's'或'd')。问最少需要修改多少个节点的标识才能使整个网络变得安全。解法思路:核心是树的二分染色。因为树是二分图,我们可以将所有节点分成两个集合,使得集合内部没有边相连。通过一次图的遍历(BFS或DFS),确定每个节点的层次(奇数层或偶数层)。这样会产生两种合法的染色方案:方案A(偶数层为's',奇数层为'd')和方案B(偶数层为'd',奇数层为's')。分别计算原标识要变成这两种方案需要修改的次数,取其中的较小值即可。------------------------------------第三题题目大意:给定&nbsp;n&nbsp;(1&nbsp;&lt;=&nbsp;n&nbsp;&lt;=&nbsp;1e5)&nbsp;个道具,每个道具有一个属性值&nbsp;ai&nbsp;(1&nbsp;&lt;=&nbsp;ai&nbsp;&lt;=&nbsp;1e9)。你需要找到一个最短的连续前缀序列(从第一个道具开始),使得这个前缀序列中所有道具属性值的最小公倍数(LCM),恰好等于全部&nbsp;n&nbsp;个道具属性值的最小公倍数。输出这个最短序列的长度。(共有&nbsp;T&nbsp;组数据,&nbsp;1&nbsp;&lt;=&nbsp;T&nbsp;&lt;=&nbsp;1e4)解法思路:直接计算LCM会超出整数范围,需要转换思路。一个数的LCM由其所有质因子的最高次幂决定。首先,遍历整个数组,对每个数进行质因数分解,用一个哈希表记录下全局LCM所需要的所有质因子及其最高次幂。然后,从头开始遍历数组,同样对每个数分解质因数,用另一个哈希表维护当前前缀的质因子最高次幂。每当一个质因子在前缀中的最高次幂达到了全局要求的最高次幂时,就标记这个质因子已满足。当所有全局需要的质因子都满足时,当前的位置就是最短序列的长度。
投递科大讯飞等公司10个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-08 18:20
职场水母:这题思路是什么,我目前想的一个暴力方法就是先把这个链表遍历一遍,用哈希表存储出现次数,然后再根据哈希表来一个一个删除节点,
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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