首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
暂无评论,快来抢首评~
相关推荐
02-04 19:11
思摩尔国际(SMOORE)_研发工程师(准入职员工)
思摩尔内推,思摩尔内推码
思摩尔结构工程师一面一面技术面,面试官比较年轻,共23min1、面试官上来要求先说说你对思摩尔的了解2、自我介绍3、针对第一个项目的提问:项目背景?你承担的工作?你在项目中遇到的问题?你最大的收获?这些项目中设计的产品有在企业中应用过吗?没有应用的原因你觉得是什么?4、针对第二个项目的提问:在项目中成员有分歧怎么办?有人不配合怎么办?5、除了学校学习和项目科研的内容,你最近有学习过什么新技术吗?6、反问环节(最长的一次)面试官详细介绍了工作内容后续流程,还有总部的一轮面试思摩尔国际2026全球校园招聘倒计时❗还没拿到offer的同学抓紧时间⏰【急招岗位】①技术研发类硕士(24-30W):产品企...
点赞
评论
收藏
分享
02-05 18:12
上海理工大学 产品经理
文科生能做产品经理吗?
最近收到了很多牛友的私信,其中有很多背景是非理工科的同学 ,问我如何能找到AI产品经理的实习;虽然现在AI产品越来越偏技术化,但是文科生还是有机会的,作为文科生,你的文字功底、共情能力、人文视角,恰恰可能是纯技术背景的产品经理所欠缺的优势,欠缺的技术部分可以后天学习给大家分享下学习思路,寒假春节放假在家学习,节后回来就开始投春招OR实习👇第一步:先搞懂「AI产品经理」到底是做什么的很多人以为AI产品经理=懂技术的产品经理,其实大错特错。AI产品经理的核心不是写代码,而是「定义AI能解决什么问题」——比如:怎么让AI客服更懂用户情绪?(推荐算法的「相关性」和「多样性」怎么平衡?当AI模型效果不...
AI求职实录
点赞
评论
收藏
分享
昨天 11:03
山东大学 C++
寂静已久的班群突然传出噩耗
双方原为男女朋友关系,推测是吵架分手,男生要钱(符合男生人设)。男方先说:“把钱还我。”转头又轻蔑一句:“不用了。”要钱的是他,拒绝的也是他——不是大方,是拿金钱当筹码;不是放下,是用冷漠划清她的卑微。女方终于爆发:“和你认识是我难以启齿的黑历史!”连讽刺都带着痛:“请开水滴筹吧!”——不是同情,是看透他的算计与虚伪。点赞过十万,追更后续。
牛客吐槽大会
点赞
评论
收藏
分享
01-02 12:05
西北工业大学 Java
简历求拷打
佬们,我这个简历寒假想投实习可以吗,现在1月份寒假实习还招人不,简历有没有什么要改的地方,欢迎锐评。
想run的马里奥在学...:
这个学历帮你扫平百分之80的障碍,投就完了,这会找不到就等3月暑期一样能找到
点赞
评论
收藏
分享
昨天 22:44
网易游戏_游戏研发工程师(准入职员工)
网易互娱内推,网易互娱内推码
网易**不管问你啥,记住一个话术原则小小的提醒下各位留子:**时不要直来直去有啥说啥;千万得多思考别说太满给自己留个思考或回旋的余地・1、被问 “有没有接触过网易的产品”(哪怕了解不多)别直接说 “没有”(容易显得缺乏兴趣)试试:“之前用过网易云音乐和网易新闻,对产品的界面设计和功能逻辑有过留意。虽然没有深入研究,但能感受到网易产品注重用户体验的特点,入职后会系统学习相关产品知识”・2、被问 “能接受高强度的项目加班吗”别勉强说 “没问题”(后续可能难以承受)试试:“我理解互联网行业项目推进时需要集中精力,在关键节点愿意配合团队加班。但也会注重提升工作效率,合理规划时间,尽量在正常工作时间完成...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
招聘动态
查看更多
27届简历点评
27届寒假/转正实习汇总
全站热榜
更多
1
...
阿里社招一面
3542
2
...
美团50亿收购叮咚买菜,校招HC会变多吗
3195
3
...
字节飞书测开日常oc,附上面经
2791
4
...
有了AI之后,程序员能不能干到65岁?
2586
5
...
AI大模型从业者聊Agent:附上学习路径
2398
6
...
测开前景
2096
7
...
字节日常实习三面 (已oc)
1986
8
...
腾讯2026技术提前批后台开发一面
1881
9
...
字节的offer流程需要多久
1854
10
...
b站Java日常实习面经
1804
创作者周榜
更多
正在热议
更多
#
在大厂上班是一种什么样的体验
#
10377次浏览
129人参与
#
你认为工作的意义是什么
#
249094次浏览
1498人参与
#
程序员找工作至少要刷多少题?
#
17955次浏览
244人参与
#
为了减少AI幻觉,你注入过哪些设定?
#
4361次浏览
145人参与
#
我现在比当时_,你想录用我吗
#
8529次浏览
111人参与
#
机械人避雷的岗位/公司
#
43295次浏览
296人参与
#
一张图晒一下你的AI员工
#
4887次浏览
113人参与
#
论秋招对个人心气的改变
#
10535次浏览
154人参与
#
关于春招/暑期实习,你想知道哪些信息?
#
7259次浏览
119人参与
#
刚入职的你踩过哪些坑
#
6634次浏览
127人参与
#
AI Coding的使用心得
#
4497次浏览
101人参与
#
晒晒你司的新年福利
#
8327次浏览
104人参与
#
牛客AI体验站
#
6578次浏览
181人参与
#
12306一秒售罄,你抢到回家的票了吗?
#
1880次浏览
47人参与
#
柠檬微趣工作体验
#
14762次浏览
83人参与
#
总结:哪家公司面试体验感最差
#
92941次浏览
430人参与
#
程序员能干到多少岁?
#
8426次浏览
115人参与
#
你认为小厂实习有用吗?
#
117981次浏览
679人参与
#
互联网公司评价
#
485489次浏览
4109人参与
#
应届生进小公司有什么影响吗
#
118239次浏览
1159人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务