首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
Boundary
2017-05-16 19:31
中国人民解放军国防科技大学 C++
关注
已关注
取消关注
头条 一面挂 😂😂😂
问了两个算法题 1.给n个数,按字典序排序后,求第m个数 2. K个超长有序数组,求中位数 第一个题 勉强答对,但是面试官不满意 第二题就没答出来。主要是自己太菜了。 求各位大神,说说该怎么做吧
提示
全部评论
推荐
最新
楼层
盛夏de午夜
腾讯_研发
如果这个数是有范围的比如是int的范围,那就可以二分数的范围来查找。 1.那么可以假设用 (int最大值+int最小值)/2,作为假设中位数mid。 2.对于k个数组,均去查找mid所对应的位置,然后计算所有数组中比mid小和比mid大的数的个数lcont,rcount,因为是有序的,这个过程只要 klogn (n为数组长度)。 3.如果lcount==rcount ,那么mid就是真正的中位数 4.否则继续二分范围,比如lcount大,就让mid往左二分。 总的时间复杂度应该是log(数的范围)*k*logn 。log(数的范围) 一般不大,int的话就32
点赞
回复
分享
发布于 2017-05-17 10:33
客户端布道师字节分布
字节跳动_抖音搜索_tech lead
/** * Created by tlh on 2017/5/17. * 求两个排序数组合并后的中位数 * 设数组A和B,长度分别为m和n, 要求时间复杂度为O(log(m+n))。 * 用二分查找的思想,求合并后数组的第k个数。每次二分的过程都要设法舍弃掉数组的一部分,从而达到收敛缩小查找范围的效果。 * 从数组A和B分别取第k/2个数,当A[k/2-1] < B[k/2-1],则A的前k/2个元素必定在合并后的数组的前k个元素内,舍弃这A的前k/2个元素。 * 否则,舍弃B中前k/2个数。 * 接下来,递归在剩下的(m+n-k/2)的元素中找第(k-k/2)元素。 * https://www.jiuzhang.com/qa/1768/ */ public class MedianOfTwoSortedArrays { // 找到第K个元素 private int findKth(int[] A, int iA, int jA, int[] B, int iB, int jB, int k) { int m = jA - iA + 1; // 数组A的长度 int n = jB - iB + 1; // 数组B的长度 if (n < m) return findKth(B, iB, jB, A, iA, jA, k); // 保证数组A长度比数组B长度小 if (m == 0) return B[k - 1]; // 当较小的数组跑完了,返回数组B的第k个 if (k == 1) return Math.min(A[iA], B[iB]); // 返回第1个数 // 将k分成两部分 int lenA = Math.min(k / 2, m); // 取数组A的前lenA个元素 int lenB = k - lenA; // 取数组B的前lenB个元素 int pa = iA + lenA - 1; // 数组A的第lenA个元素 int pb = iB + lenB - 1; // 数组B的第lenB个元素 // 判断A[pa]和B[pb]的大小 if (A[pa] < B[pb]) return findKth(A, pa + 1, jA, B, iB, jB, k - lenA); // 舍弃数组A的前lenA个元素 else if (A[pa] > B[pb]) return findKth(A, iA, jA, B, pb + 1, jB, k - lenB); // 舍弃数组B的lenB个元素 else return A[pa]; // A[pa]或B[pb]就是对应的第k个数 } public float getMedian(int[] A, int[] B) { int totalLen = A.length + B.length; if ((totalLen & 1) == 1) { // 总数组长度为奇数 return findKth(A, 0, A.length - 1, B, 0, B.length - 1, totalLen / 2); } else { // 总数组长度为偶数 return (findKth(A, 0, A.length - 1, B, 0, B.length - 1, totalLen / 2) + findKth(A, 0, A.length - 1, B, 0, B.length - 1, totalLen / 2 + 1)) / 2.0f; } }
点赞
回复
分享
发布于 2017-05-17 18:20
清夜
北京邮电大学 C++
初步思考了一下,说一下自己的想法,如有误,轻喷... 对于第一题,字典序也是一种全序,这样的话使用partition的思路应该也可以O(log(n)),需要自己定义比较函数 对于第二题,应该是和2个数组的情况类似,相当于判断k个数组的第rank / k 个元素,找其中最小的淘汰元素。感觉实现起来也挺复杂,复杂度的话是在O(klogn)吧,不太确定 之前还想了使用堆的方法,就是使用一个最小堆存储数组首地址(指针),键值就是首元素值,然后每次取堆顶指针对应元素,递增指针,这样就改变了键值,调整堆,然后重复过程n/2次找到中位数 复杂度是O(klogk + n/2 * logk),只是比nk稍微好一点。。。。。。
点赞
回复
分享
发布于 2017-05-17 20:18
Boundary
楼主
中国人民解放军国防科技大学 C++
关于第一题, 是不是可以用堆排序? 定义某种比较函数cmp, 使得可以让11>101. 维护一个大小为m的大顶堆, 取前m个元素组成大顶堆, 遍历剩下的n-m个元素, 对于新的元素, 如果小于堆顶元素, 就替换堆顶元素,并调整堆, 否则就跳过该元素.继续比较下一个新的元素. 直到所有元素遍历完, 返回堆顶元素. 这样做的复杂度为O(nlog(m)). 但这种做法不适用于m很大的情况.
点赞
回复
分享
发布于 2017-05-17 19:22
sky_
University of Otago C++
第二道题,二分,
点赞
回复
分享
发布于 2017-05-17 17:20
东风造极
中国科大 Java
第一题,是这个题目?http://blog.csdn.net/fool _ran/article/details/40479059
点赞
回复
分享
发布于 2017-05-17 14:36
已注销
第一题的做法是: 将所有数字都在最后补充0,直到到位数相同,即位数不够的一直乘10,然后从小到大排序,第m个数字删去最后补充的0就是答案。 时间复杂度大约是n*logn,补0是复杂度为19*n,logn和19相差不大。
点赞
回复
分享
发布于 2017-05-17 12:10
静静卟噜卟噜
三峡大学 Java
为啥头条面试官都是女的
点赞
回复
分享
发布于 2017-05-17 08:53
zehua
西安交通大学 测试开发
我是来看大神怎么解的~
点赞
回复
分享
发布于 2017-05-16 23:47
C.C.
河北师范大学 iOS开发
第二个题目可以 维护两个堆来找中位数。
点赞
回复
分享
发布于 2017-05-16 22:21
盛夏de午夜
腾讯_研发
感觉你第一题答出来,第二题把k=2说清楚,应该没问题
点赞
回复
分享
发布于 2017-05-16 21:20
nicaiww
南京大学 Java
面试官是个女的?
点赞
回复
分享
发布于 2017-05-16 20:33
elop
南京航空航天大学 C++
都已经有序了?还求什么中位数
点赞
回复
分享
发布于 2017-05-16 20:25
牛客1973
重庆邮电大学 C++
楼主面的什么岗位?
点赞
回复
分享
发布于 2017-05-16 20:23
晴天158
Grab_Delv_服务端研发
第二题百度考了,不过是个简单版,给俩有序数组找中位数,要求复杂度log(数组和的长度)
点赞
回复
分享
发布于 2017-05-16 19:54
暂无评论,快来抢首评~
相关推荐
2025-12-31 14:11
已编辑
大数据开发工程师
如何判断一个类的返回对象是否是迭代器
1. 使用 isinstance() 和 collections.abc.Iteratorfrom collections.abc import Iteratora = map(lambda x: x**3, [1, 2, 3])print(isinstance(a, Iterator)) # 输出: True2.检查迭代器协议的方法a = map(lambda x: x**3, [1, 2, 3])print(hasattr(a, '__iter__')) # 输出: Trueprint(hasattr(a, '__next__')) # 输出: True # 迭代器的 __iter__ 方...
点赞
评论
收藏
分享
2025-12-29 15:34
正浩创新EcoFlow_电力电子软件工程师(准入职员工)
正浩创新内推,正浩创新内推码
一整个面试下来,感觉正浩的技术面真的很扎实!趁热乎整理一波面经(纯干货版),希望能帮到准备面试的学弟学妹们~ 【结尾有血泪总结建议!】🔧 【一面 · 硬核技术面】面试官问的非常细致深入🔥,主要围绕电源知识,我总结出的题目供参考:1为什么相同载波频率下,单相全桥用单极性倍频比双极性调制,变压器发热少?2为什么光靠软件死区不够可靠?(死区门道多啊!)3MOSFET vs IGBT,优缺点怎么选?(器件基础)4LCL滤波器咋设计?(公式忘了,幸好说清了关键参数影响😅)5LC vs LCL滤波器区别?6逆变器输出电流THD从3%降到2%以下,你会改啥?7Boost拓扑和输入输出关系?(基础中的基...
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
2025-12-18 11:41
带实习生真的能把人逼疯!
俩实习生全是槽点,还一个个摸鱼摸到飞起,现在就问:这俩到底咋选?怎么带?实习生 A:一点就透,还能活跃组内气氛,妥妥的机灵鬼。但架不住爱忘事、左耳进右耳出,交上来的活儿也就刚够及格线,摸鱼倒是比谁都积极。实习生 B:做事踏实能落地,进度反馈贼及时,让人省心不少。可悟性是真差,一点小事得反复确认八百遍,巨费时间,摸鱼这事儿也没少干。一个机灵是机灵,就是太不省心;一个稳当归稳当,带起来太费劲。换你你选哪个?这俩到底该咋带啊?
巨龙梦行:
笑死,正职自己摸鱼摸得飞起,转头倒嫌弃起实习生来了,真不知道安的什么心!官儿没多大,谱倒是摆的挺足。
选实习,你更看重哪方面?
点赞
评论
收藏
分享
2025-11-21 15:57
中山大学 Java
27想找日常实习 求牛爷爷们拷打
27届找不到日常实习,不是已读不回就是简历挂,简历的项目是点评和星球的rpc,项目描述是照搬星球和网上的,有需要修改的吗
erer__:
感觉面试官比我更熟悉点评项目😂还教我应该怎么说
点赞
评论
收藏
分享
2025-12-30 13:18
门头沟学院 C++
究竟是什么样的前程值得我们如此?
停下来就有负罪感?明明是周末,躺在床上刷手机却觉得心慌; 看到同龄人升职加薪、晒offer,第一反应不是祝福,而是焦虑自己“被落下了”; 潜意识里觉得:如果不优秀,我就不配被爱;如果不成功,我就是个loser。优绩主义给我们编织了一个完美的谎言:只要你努力,就能成功;如果你没成功,那就是你不够努力。但这太残酷了,也太傲慢了。 它忽略了运气、忽略了环境、忽略了起跑线的不同。它让我们变成了在这个系统里疯狂奔跑的仓鼠,不敢停下,生怕被甩出转轮。回看这一年,我像是个被上了发条的玩偶,却不知道开关在哪。 4月: 开始备战实习,焦虑的种子埋下; 实习期: 以为上岸会轻松,结果压力不降反增,每天都在自我怀疑...
我们是不是被“优绩主义”...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
2
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
你会和mentor进行deeptalk吗?
2974
2
...
双非本2025秋招总结:65w+SSP三选一,最终还是“有鹅选鹅”|附面试心路历程
2253
3
...
学院本 末 211 硕勇闯 java 后端实习美团 oc 逆袭指南
1606
4
...
牛客运营们,我保证这是我最后一次消费烤肠了!
1430
5
...
27届学院本一段中厂一段中大厂实习,简历求锐评
1010
6
...
元旦前被裁员了
850
7
...
我的牛客年度报告
736
8
...
实习两周遭劝退,隔天就招新人,合理吗?
717
9
...
2025年牛客年度作者丨颁奖典礼✨
701
10
...
27前端已没招
701
创作者周榜
更多
正在热议
更多
#
实习没人带,苟住还是跑路?
#
16603次浏览
313人参与
#
AI时代,哪些岗位最容易被淘汰
#
25550次浏览
217人参与
#
我们是不是被“优绩主义”绑架了?
#
11700次浏览
322人参与
#
秋招被确诊为……
#
280052次浏览
1587人参与
#
牛客2025仙途报告
#
47540次浏览
527人参与
#
每个月的工资都是怎么分配的?
#
81523次浏览
662人参与
#
字节出了豆包coding模型
#
8234次浏览
70人参与
#
对2025年忏悔
#
7890次浏览
153人参与
#
春招前还要继续实习吗?
#
9722次浏览
111人参与
#
为了秋招你都做了哪些准备?
#
30010次浏览
528人参与
#
离家近房租贵VS离家远但房租低,怎么选
#
14226次浏览
132人参与
#
2025秋招体验点评
#
86298次浏览
719人参与
#
非技术2024笔面经
#
452365次浏览
4920人参与
#
一人说一家双休的公司
#
11382次浏览
127人参与
#
牛友的国庆旅行碎片
#
26521次浏览
128人参与
#
我的第一个1024节
#
17138次浏览
251人参与
#
职场新人生存指南
#
492191次浏览
9518人参与
#
面试官问过你最刁钻的问题是什么?
#
13492次浏览
122人参与
#
工作后会跟朋友渐行渐远吗
#
54444次浏览
395人参与
#
毕业租房也有小确幸
#
152851次浏览
4533人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务