首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
昨天 12:41
汤臣倍健_市场倍优生(准入职员工)
三棵树内推,三棵树内推码
三棵树ai测评行为能力1.请做一段自我介绍,说说你的教育背景,实习经验等,用时不超过5分钟。2.在你的学习和项目经历中,你似乎经常面临时间紧迫、任务繁重的挑战,能否分享一个具体的例子,描述一下在面对这些压力时,你如何管理和应对及最终达成目标的。3.你参与的这个项目最终的成果如何,你的成果得到了哪些方面的认可和表彰。4.回忆一下在你的学习或实习经历中,有一次你主动追求极致,把事情做到最好的例子,你当时究竟做了什么,为什么选择这么做,怎么证明这件事已经做到了最好。5.请回忆一个在团队工作里,你和团队成员没能达成一致意见的情况,当时你具体是怎么做的,说了什么去影响对方,最后结果是怎样的呢?6.从你的...
点赞
评论
收藏
分享
02-25 16:02
OPPO_AI算法部_AI研究员(准入职员工)
OPPO内推,OPPO内推码
OPPO二面面经 C/C++开发请详细介绍您简历中提到的基于单片机的开发项目。请详细介绍您简历中提到的嵌入式Linux系统开发项目。(注:根据描述,这两个项目是面试重点)您在Linux系统下开发过哪些类型的设备驱动?请简述您对Linux I/O多路复用机制 epoll 的理解。您提到了LCD驱动和Input子系统,能否更具体地谈谈您在这方面的实践经验?在Linux设备驱动开发中,中断处理函数的编写需要遵循哪些要点和规范?您是否了解 key_report 这类事件上报机制在底层(如Input子系统)是如何实现的?(驱动开发) 请概述开发一个字符设备驱动程序的主要步骤和框架。(驱动开发) 如果要为...
点赞
评论
收藏
分享
01-02 12:05
西北工业大学 Java
简历求拷打
佬们,我这个简历寒假想投实习可以吗,现在1月份寒假实习还招人不,简历有没有什么要改的地方,欢迎锐评。
想run的马里奥在学...:
这个学历帮你扫平百分之80的障碍,投就完了,这会找不到就等3月暑期一样能找到
点赞
评论
收藏
分享
02-01 20:56
中国传媒大学 运营
实习小厂为什么叫小厂还是有道理的
我的第一家实习公司,算是小厂吧,我个人觉得。第一家实习公司,是学校在短时间内让我们赶紧去找的,也怪我当时没有这个意识,当“花花公子”天天吃喝玩乐去了,所以在短时间内,根本没空考虑时间什么的,随便找了一个小厂就进去了,然后在那做了三个月,期间,真的感觉到了和正职还是有差别的,正职过生日吃蛋糕,都躲在会议室偷偷吃,不给我们实习生哈哈哈,虽然也不是为了那一口蛋糕吧,但是心里也挺不得劲的
不知道怎么取名字_:
这个蛋糕这个有点夸张了啊,做到这地步啊
你的第一家实习公司是什么...
点赞
评论
收藏
分享
02-21 01:26
已编辑
门头沟学院 前端工程师
Vue转React学习笔记(2):实现简易的react版SSR
一、原理概述1. 历史进程web前端发展二三十年以来,前端渲染方案经历了“前后端耦合”—“ 前后端分离 + CSR”—“混合渲染逐渐流行”三个阶段。a. 前后端耦合阶段这一阶段是纯粹的服务端渲染,当时前端尚未形成独立的概念,只需要承担切图的工作,由后端通过JSP/php模板拼接html字符串,由浏览器解析html。这种方式前后端耦合度极高,开发效率低,页面交互体验差(每次操作都要刷新整个页面,重新请求HTML)。b. 前后端分离 + CSR主导随着SPA框架(React、Vue)的兴起,前端进入“前后端分离”时代。后端仅提供接口,前端通过AJAX请求获取数据,再通过JS动态生成页面内容、操作D...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
招聘动态
查看更多
27届简历点评
AI网申助手
网申字段一键填写
27届寒假/转正实习汇总
全站热榜
更多
1
...
32分钟投了18家网申,效率如何?
1.3W
2
...
秋招以来的AI面经问题
6546
3
...
面试官视角聊聊:如何在AI浪潮中找到好工作?
4402
4
...
2027届暑期实习大科普,为什么从来没人给你讲过这些事情?
3618
5
...
急哭了!985科班本三段大厂实习被阿里一脚踹飞!简历都没收!
2890
6
...
美团测开->腾讯后端,感谢那个不愿放弃的自我
2005
7
...
老板原话:AI要完全取代程序员了
1886
8
...
没算力,能搞大模型吗?
1821
9
...
C++ MySql 常考面试题总结
1581
10
...
你不可不看的暑期实习注意事项(权威版)
1475
创作者周榜
更多
正在热议
更多
#
xx岗简历求拷打
#
21002次浏览
187人参与
#
牛友的志愿填报指南
#
50440次浏览
241人参与
#
开工第一帖
#
67883次浏览
1133人参与
#
找工作有哪些冷知识
#
227417次浏览
2700人参与
#
有转正机会的小厂实习值得去吗?
#
12750次浏览
123人参与
#
今年形式下双非本找得到工作吗
#
288662次浏览
1645人参与
#
应届生,你找到工作了吗
#
109992次浏览
663人参与
#
听劝,这个简历怎么改
#
383864次浏览
1834人参与
#
如果再来一次,你还会学硬件吗
#
155325次浏览
1459人参与
#
业务面应该做哪些准备
#
96011次浏览
1054人参与
#
你上一次加班是什么时候?
#
134191次浏览
748人参与
#
招聘要求与实际实习内容不符怎么办
#
171355次浏览
933人参与
#
你找工作的时候用AI吗?
#
177997次浏览
914人参与
#
毕业季,给职场新人一些建议
#
191614次浏览
2504人参与
#
你怎么看待AI面试
#
152657次浏览
815人参与
#
实习心态崩了
#
104819次浏览
525人参与
#
找工作中的意难平
#
995543次浏览
6434人参与
#
跳槽时有那些注意事项
#
124685次浏览
592人参与
#
掌握什么AI技能,会为你的求职大大加分
#
14934次浏览
542人参与
#
租房找室友
#
63242次浏览
248人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务