首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
尤里卡斯特
2018-04-02 15:20
已编辑
华南理工大学 算法工程师
关注
已关注
取消关注
头条面试的算法题,怎么解?
头条面试的时候问的算法题:
给定一个乱序的链表,现在有一个操作:可以把链表任意位置的值移动到链表的最后。求链表排序所需要的最少操作次数。
样例:
假如链表的值为:5 1 2 3 那么最少的操作次数为1,直接把5移到最后即可,输出为1.
再比如 链表值为 5 2 1 3 ,那么应该先把2移到最后,再把3移到最后,再把5移到最后,这样输出的结果为3.
怎么解?
#实习#
#面经#
提示
全部评论
推荐
最新
楼层
DmcDante
上海交通大学 Java
把链表所有值扔到一个最小堆,count计数为0,遍历链表找到和最小堆堆顶元素相等的节点,最小堆出堆,count计数+1,检测当前堆顶是否和下一个节点相等,相等的话重复上述操作,不相等说明链表中从最小节点开始符合全局有序的序列长度为count,需要移动的最小次数是总数n-count 如5 2 1 3 ,第一次堆顶为1,找到链表中1的位置,下一个堆顶元素为2,但是节点的下一个元素为3,不相等,所以最小移动次数为4-1=3,代码中注意下边界条件检测等问题应该就ok
点赞
回复
分享
发布于 2018-04-02 15:23
接下来的路才真正的开始
武汉科技大学 C++
举例:5 4 8 9 1 7 6 2 3 本质上就是找到最小的数,然后从最小的数开始一直到后面的最长有序序列。 首先找到最小数1。1左边的肯定要移动,直接不用管。 5 4 8 9 1 6 7 2 3 从1开始,6大于1,标记f1为5,即已排序的下标;标记f2为5,即为已遍历的下标。 7大于6,标记f1为6,f2为6。 2小于6,标记f1位5,f2为7,且序列变为5 4 8 9 1 2 7 2 3 3大于2,标记f1位6,f2为8,且序列变为5 4 8 9 1 2 3 2 3 最后用标记f1,即最后需要找的序列,减去最小数的下标,即为他的长度,也就是最小的数开始一直到后面的最长有序序列的长度m。所以最后的结果为 N(总长度)-m。
@尤里卡斯特
中间查找比较的时候可以用二分优化下。。
点赞
回复
分享
发布于 2018-04-03 10:17
lzslzslzs
山东农业大学 C++
先遍历一遍找到最小值min1,记录下来。 然后再次遍历,找到min1左边部分的最小值min2。 记录min1右边部分有多少个数大于min2,记为cnt。 最后结果即为 左边部分数量+cnt 时间复杂度为O(n),;使用了3个int(longlong),空间复杂度为常数阶
点赞
回复
分享
发布于 2018-04-03 00:39
接下来的路才真正的开始
武汉科技大学 C++
时间空间要求? 假设 5 4 8 9 1 7 6 3 首先找到排序 1 3 4 5 6 7 8 9 然后和原始数列进行对比发现,从最小数1开始。 发现只有1 3满足要求,即1 3不动, 其他数从小到大依次往后移。 所需移动次数未8-2=6,移动如下: 5 8 9 1 7 6 3 4 8 9 1 7 6 3 4 5 8 9 1 7 3 4 5 6 8 9 1 3 4 5 6 7 9 1 3 4 5 6 7 8 1 3 4 5 6 7 8 9
点赞
回复
分享
发布于 2018-04-02 16:43
山柴贩
浙江大学 Java
https://www.nowcoder.com/questionTerminal/adc291e7e79f452c8b59243a5ce68d3a 和这个题类似的
点赞
回复
分享
发布于 2018-04-02 16:17
anonk
鄂州职业大学 C++
5 -> 1 -> 2 -> 3 提供参考思路,时间复杂度O(n), 空间复杂度O(1) 1. 找链表的最小值,比如1,指针为lo,count=1 2. 找lo前面的最小值为5,查找一次就ok 3. 从lo开始往后找,找lo后面的最小值为2,对比2和5,比前面的最小值5小,count++,lo设置为2,重复第3步 4. 如果第3步中向后遍历的值比5大,可以结束了,答案就是 链表长度-count。
点赞
回复
分享
发布于 2018-04-03 10:21
已删除
你有没有问条件,比如这n个数范围,是范围内随机数,还是1-n,是有重复还是没有重复数字,单链表还是双向链表,条件不同,做法就不同
点赞
回复
分享
发布于 2018-04-02 21:28
=..=
腾讯_天美_研发工程师(准入职)
空间是O(1)应该是有条件的,猜测是数字从1-n连续,其实就是给了你排好序的数组,把链表遍历一遍,记录不需要变的个数count,n-count就行了
点赞
回复
分享
发布于 2018-04-02 19:55
尤里卡斯特
楼主
华南理工大学 算法工程师
头条的算法题,真难!
点赞
回复
分享
发布于 2018-04-02 19:42
加满油go
华南理工大学 算法工程师
我觉得思想可能是首先从最小的数查找,从它开始查看下一个是否是比它大的最小的数,如果是继续寻找,如果不是,1则找到比它大的最小的数把排到最后,然后比他大的都要排一次最后,所以我觉得总次数为:假如前m个数为紧挨升序排列,则最小排列次数为(n-m),n为总个数。
点赞
回复
分享
发布于 2018-04-02 19:00
海量hc
中山大学 算法工程师
双指针?空间复杂度O(1)我也不知道 def f(nums): sortnums = sorted(nums) n = len(nums) i = nums.index(min(nums)) j = 0 if i == n - 1: return n - 1 while i < n and j < n: if nums[i] == sortnums[j]: i = i + 1 j = j + 1 else: i = i + 1 return n - j
点赞
回复
分享
发布于 2018-04-02 18:00
小罐球
浙江大学 算法工程师
//找到从最小值开始的最长有序序列,动规遍历一遍,碰到更小的值归零? int count; int curmin = 0; int dp[N]; for(int i = 0; i < N; i++){ if(a[i] > curmin){ if(a[i] > a[i] - 1){ dp[i] = dp[i - 1] + 1; } else{ dp[i] = dp[i - 1]; } } else{ curmin = i; dp[i] = 0; } } count = N - dp[N-1];
点赞
回复
分享
发布于 2018-04-02 17:30
已删除
一个数前面有比它大的数,那么这个大的数必须移一次 找出所有需要移的数,按从小打到依次往后移 用stack来实现
点赞
回复
分享
发布于 2018-04-02 15:45
Juliiii
中山大学 C++
头条的算法题真是一题比一题惊心
点赞
回复
分享
发布于 2018-04-02 15:13
暂无评论,快来抢首评~
相关推荐
昨天 20:13
蚌埠坦克学院 嵌入式软件开发
上班后,才发现大学嵌入式白学了
刚上班的时候,我信心满满,以为自己在大学里学的那些单片机实验、C语言编程、LED 闪烁、UART 通信,能直接派上用场。结果刚进公司不到一周,我就彻底傻眼了。实际工作中的嵌入式,和学校那点“点灯、串口打印”完全不是一个层次。项目里到处都是 RTOS、驱动层、协议栈、Makefile、CMake,还有各种我只在面试八股文里见过的名词。别人改个 bug,动辄十几个文件联动,我连函数在哪都找不到。更打击的是,大学教的东西都太“孤立”了——知道寄存器配置,却不懂系统架构;能写 main 函数,却不会模块化设计;能点亮一个灯,却做不出完整的功能。上班后才发现,真正的嵌入式开发是系统性的工程思维,不是几个...
上班后,才发现大学__白...
点赞
评论
收藏
分享
11-03 16:06
已编辑
门头沟学院 Java
秋招offer求帮选!帮帮孩子!
求大佬帮孩子选选秋招offerbg双2,江苏人,后端简历,不怕卷但是不喜欢太卷。。目前意向高的offer就是如下:主要就是纠结字节客户端和帆软后端。荣耀还在泡很可能泡不出来。纠结的点:字节:其实一直很想去字节,小女子还没有对大厂祛魅,并且抖音也是核心业务。但是客户端劝退看多了很害怕未来职业发展受限。不知道有没有uu可以客观地评论一下帆软:薪资在无锡能很舒服,无锡离家也近,听说基本wlb(八点能走人?)但是怕B端业务没有什么含金量,以及没有大厂的背书。真的很纠结,球球uu们能指点迷津。
不卷了:
去字节就等着卷似吧,感觉这边都只看title,不考虑工作强度的
投递帆软软件等公司10个岗位
点赞
评论
收藏
分享
10-10 01:10
已编辑
深圳大学 测试开发
为啥0面试啊家人们
😇😇😇
面了100年面试不知...:
六月到九月,四个项目一个实习,是魔丸吗
投了多少份简历才上岸
点赞
评论
收藏
分享
10-22 19:26
北京理想汽车有限公司_理想空间_后端开发(实习员工)
27届北漂实习day3
对面老哥这屏幕要起飞了哈哈哈哈
schizophre...:
章鱼博士啊
我的实习日记
点赞
评论
收藏
分享
10-30 21:54
学而思_HR(准入职员工)
学而思内推,学而思内推码
1️⃣ 请先做个简单的自我介绍? 😊 2️⃣ 能否谈下你应聘这个岗位的优势? 🌟 3️⃣ 你的职业规划是什么? 🎯 4️⃣ 为什么选择学而思作为你的求职目标? 🏢 5️⃣ 你对学而思的课程顾问岗位有哪些了解? 📋 6️⃣ 描述一次团队合作的经历,你在其中扮演了什么角色? 🤝 7️⃣ 遇到工作压力大时,你通常如何应对? 😊 8️⃣ 面对家长和学生的投诉,你会如何处理? 💬 9️⃣ 如何向一个对学而思课程持怀疑态度的家长介绍课程? 📚 🔟 请举例说明你如何通过有效沟通解决过一个问题。 💡 1️⃣1️⃣ 描述一次你认为成功的销售或推广经验。 🚀 1️⃣2️⃣ 你如何看待持续学...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
招聘动态
查看更多
字节跳动火山引擎
2026校园招聘
联想
2026届校园招聘
字节跳动
2026校园招聘
联想
26届AI专项|内推码NK2026
快手
2026届校园招聘
中欧基金
2026届卓越之星校招
联想
2026届校园招聘
全站热榜
更多
1
...
企鹅后端日常实习一面
9398
2
...
26届0实习秋招总结
9371
3
...
超级大月亮来了, 都来评论区许愿,包灵
8778
4
...
《以下言论仅代表个人观点,与百度无关》
8186
5
...
摸爬滚打,我也一定要离开华为
6858
6
...
数字马力一面
6530
7
...
秋招丑闻爆料爆料
5384
8
...
那个绩点倒数,挂科7门的女生最后考上了985研究生
5025
9
...
数字马力一面
4523
10
...
这八股我都只背,不实战的
4491
创作者周榜
更多
正在热议
更多
#
我来点评面试官
#
6657次浏览
56人参与
#
实习教会我的事
#
37470次浏览
320人参与
#
京东开奖
#
442493次浏览
2490人参与
#
今年秋招是回暖还是遇冷
#
15025次浏览
90人参与
#
如果不考虑收入,你最想做什么工作?
#
36821次浏览
225人参与
#
你实习是赚钱了还是亏钱了?
#
16162次浏览
153人参与
#
商战,最累的是我们
#
25034次浏览
91人参与
#
京东工作体验
#
17582次浏览
104人参与
#
同bg的你秋招战况如何?
#
164248次浏览
953人参与
#
教师节,你送祝福了吗
#
9959次浏览
72人参与
#
用一句话形容你的团队氛围
#
9915次浏览
117人参与
#
秋招开始捡漏了吗
#
53576次浏览
362人参与
#
三一重工求职进展汇总
#
21933次浏览
82人参与
#
找工作八股要背到什么程度?
#
9084次浏览
144人参与
#
考研人,我有话说
#
150800次浏览
1199人参与
#
硬件人,你被哪些公司给挂了
#
69271次浏览
932人参与
#
58同城求职进展汇总
#
39205次浏览
260人参与
#
你找工作是从容有余 or 匆忙滚爬?
#
5930次浏览
64人参与
#
华为存储OD事变
#
144467次浏览
724人参与
#
上班后,才发现大学__白学了
#
9384次浏览
57人参与
#
大学生该如何认清当下的就业环境?
#
108189次浏览
637人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务