京东笔试

1.给定一个大数N[-10^100, 10^100],求1-N中是100倍数的数的个数。

思路:特判一下小于100的数答案为0,其它情况答案就是把输入的N后两个字符pop掉。

2.模拟题

3.给定一个长度为N的数组[1, 1000000],求满足区间任意选3个元素都构成三角形的最大长度的区间,若有多个区间输出左端点最小的那个。

1.首先考虑三角形构成的性质。

1)两边之和大于第三边

2)两边只差小于第三边

2.考虑最坏情况

对于第一个性质来说最坏情况就是挑了区间最小和次小元素,和最大元素

对于第二个性质来说同上。

3.考虑答案的构成

一个常见的想法是枚举区间左端点,然后挪动右端点,稍微琢磨一下你的右端点是具有单调性的,即不可回头挪,因此做法出来了。

O(nlogn)做法:

现在需要考虑怎么维护这个动态区间的最大最小和次小元素,一个朴素的想法是,可以通过map去维护这个东西,是nlogn的,但很遗憾,常数有点大无法通过。

因此我们需要降低map的使用次数,严重情况下会达到2nlogn,我们可以记录答案再去考虑挪动区间,这样就会少一些用到map的次数,因此这个题也就可以卡过去了。

但仍然可以进一步进行思考。

O(n)做法:

我们现在需要解决的问题是如何去掉map?考虑在刷了力扣的玩家来说,单调队列一定有了解,因此对于维护最大和最小我们可以用单调队列解决,那有一个问题是,如何维护次小呢?

我们可以想象次小值取的情况是什么?

1)若它是最小值后面进来的,那它一定在单调队列的第二个。

2)若它是最小值前面进来的,那它一定被弹出去了。

因此我们可以想到再用一个单调队列维护被弹出去的最小值,那么次小值的情况就讨论完成了。

因此就实现了这题的O(n)做法

#京东##京东笔试题#
全部评论
第三题用multiset会更简单点
点赞 回复 分享
发布于 2024-08-24 18:52 江苏
大佬,第三题,区间dp能不能做
点赞 回复 分享
发布于 2024-08-24 18:27 重庆
为什么第一题同样思路只过了50
点赞 回复 分享
发布于 2024-08-24 18:26 陕西

相关推荐

面了这么多场试,总有公司总喜欢压力面一个小时面试+手撕,哪里不会就点哪里,说了不会不会还继续追着问不尊重求职者,稍微有些细节记不清了,就开始怀疑项目真实性以及人格让求职者开摄像头但是自己不开,说话声音还贼小,pardon几次就开始不耐烦的不知道这个算不算,手撕的时候,面试官人跑了。。。最后快结束才来
一纸丿繁华丶:你换位思考一下,自己在职场被领导push麻了,身心俱疲,现在有个机会让你放松一下,体验一把上位者的感觉,还能看着那些高学历人才、未来自己的竞争者,抓耳挠腮、手足无措的样子,没给你当场笑出来就不错了,理解一下面试官吧。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-19 19:05
点赞 评论 收藏
分享
05-23 20:31
已编辑
武汉大学 Java
内向的柠檬精在研究求职打法:注意把武大标粗标大 本地你俩不是乱杀
点赞 评论 收藏
分享
评论
2
11
分享

创作者周榜

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