首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
07-29 12:03
门头沟学院 Java
秋招第一面是虾皮给的
虾皮信息一面364人在聊
点赞
评论
收藏
分享
07-29 10:51
中金所技术公司_业务
【07.29更新】能救一个是一个!26届毁意向毁约裁员黑名单
前后已经更新了得有上千家的无良公司黑心行为,查看往届更新、完整名单,订阅专栏《毁意向毁约裁员黑名单汇总》实习、校招、社招一直在更新,需要链接可以私信哨哥,查看往期更新,订阅专栏《实习校招社招信息汇总》★ 欢迎浏览哨哥置顶帖,了解更多内容:血泪经验贴:如何从零准备到收获offer(我是哨哥的置顶贴)★ 感兴趣银行等金融科技,可以浏览这:哨哥的金融科技学习笔记★ 银行等金融科技&国企求职就业,看:银行等金融科技行业校招求职攻略有看到无良公司的恶劣行为,记得艾特哨哥,持续更新,全都记录!有看到无良公司的恶劣行为,记得艾特哨哥,持续更新,全都记录!有看到无良公司的恶劣行为,记得艾特哨哥,持续更...
C137:
倒闭吧
毁意向毁约裁员黑名单汇总
点赞
评论
收藏
分享
06-12 18:03
河北软件职业技术学院 Python
25毕业生没实习
快要崩溃了,都给干上限了
不会acac只会wa...:
你这要是能找到,那我赤了三年的屎算什么
听劝,我这个简历该怎么改...
点赞
评论
收藏
分享
07-15 11:14
西安科技大学 Java
ai一查才知道很多企业都算大厂
人的认知还是太狭隘了,我理解中的大厂就只有什么华为什么腾讯字节这种耳熟能详的,所以看到很多之前没有听说过名字的公司,以为就是一些中小厂,上ai一查才发现,我去,什么行业龙头,我去,怎么办公室有一栋楼,我去这是什么时候变成这么大规模的。不过可能我认知中的大厂没有那么大,客观来说大厂必须得万人规模,但是我觉得能有千人就已经很大了😭能进这种公司就满足了😭求职的时候全靠ai来搜索公司到底是什么行业的有什么产品,不然我哪里知道……
客户端小将:
管他规模大不大,薪资到位就是大厂
你找工作的时候用AI吗?
点赞
评论
收藏
分享
07-31 18:34
OPPO_运营管理_HR
鹅厂这么活
整体感觉:温和儒雅,攻击性不像阿里和字节那么强 1. 腾讯每个月会给员工发30Q币,用这30Q币可以给自己买一个腾讯视频会员和一个QQ音乐会员。 2. 每月1号可以领取体验福利,别问我的王者荣耀10级vip怎么来,反正没花一分钱 3. 一些特殊日子时,公司都会发一些福利。比如之前QQ音乐周年纪念日,给全体腾讯员工一年的绿钻会员 4. 在腾讯也不需要怎么买衣服了,每隔一段时间就会发些文化衫,光文化衫都穿不过来了。除了发衣服,也会有各种大礼包,比如本子、包、贴纸、公仔、吃的 5. 腾讯内部有一个Q米系统非常棒,每年都会给员工发放2000左右(不同职级不一样) 6. 腾讯自己创造了一个孝顺长辈节,每...
投递腾讯等公司10个岗位
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
招聘动态
查看更多
米哈游2026校园招聘
瓴岳科技
2026届“登岳计划”校招启动
滴滴
2026届秋季校招提前批
京东
JDS-新星计划
全站热榜
更多
1
...
百度提前批,三面被推迟一周,喜提秋招第一凉
7791
2
...
虾皮秋招一面
3325
3
...
百度提前批 三面
2921
4
...
他拿大厂SSP Offer打牌是什么概念啊?25届双非之光
2773
5
...
小鹏offer
1620
6
...
被猿辅导挂了简历,但我想说...
1494
7
...
虾皮一面凉经
1392
8
...
上班一周,工资还没拿,先欠公司两千
1372
9
...
最强本科✌
1369
10
...
大学四年,我感觉我像个“孤勇者”
1323
创作者周榜
更多
正在热议
更多
#
简历上的经历如何包装
#
29681次浏览
822人参与
#
秋招被确诊为……
#
164210次浏览
754人参与
#
中兴秋招
#
205856次浏览
2296人参与
#
工作中哪个瞬间让你想离职
#
63763次浏览
569人参与
#
你最希望上岸的公司是?
#
135280次浏览
706人参与
#
和同事相处最忌讳的是__
#
24527次浏览
244人参与
#
25届网易互娱暑实进度
#
78446次浏览
702人参与
#
虾皮求职进展汇总
#
249513次浏览
1857人参与
#
投格力的你,拿到offer了吗?
#
86824次浏览
584人参与
#
2022毕业即失业取暖地
#
102723次浏览
662人参与
#
2022毕业生求职现身说法
#
89306次浏览
700人参与
#
秋招OC许愿
#
327834次浏览
2450人参与
#
你最近一次加班是什么时候?
#
71015次浏览
350人参与
#
26届的你,投了哪些公司?
#
45527次浏览
497人参与
#
你的秋招第一面感觉怎么样
#
76949次浏览
592人参与
#
柠檬微趣工作体验
#
6761次浏览
40人参与
#
你遇到最难的面试题目是_
#
16752次浏览
201人参与
#
我对___祛魅了
#
48706次浏览
441人参与
#
地平线求职进展汇总
#
52666次浏览
370人参与
#
研究所VS国企,该如何选
#
194865次浏览
1819人参与
#
如果校招重来我最想改变的是
#
271974次浏览
2853人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务