首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
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
山柴贩
浙江大学 Java
https://www.nowcoder.com/questionTerminal/adc291e7e79f452c8b59243a5ce68d3a 和这个题类似的
点赞
回复
分享
发布于 2018-04-02 16:17
接下来的路才真正的开始
武汉科技大学 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
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 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
Juliiii
中山大学 C++
头条的算法题真是一题比一题惊心
点赞
回复
分享
发布于 2018-04-02 15:13
已删除
一个数前面有比它大的数,那么这个大的数必须移一次 找出所有需要移的数,按从小打到依次往后移 用stack来实现
点赞
回复
分享
发布于 2018-04-02 15:45
小罐球
浙江大学 算法工程师
//找到从最小值开始的最长有序序列,动规遍历一遍,碰到更小的值归零? 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
海量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
加满油go
华南理工大学 算法工程师
我觉得思想可能是首先从最小的数查找,从它开始查看下一个是否是比它大的最小的数,如果是继续寻找,如果不是,1则找到比它大的最小的数把排到最后,然后比他大的都要排一次最后,所以我觉得总次数为:假如前m个数为紧挨升序排列,则最小排列次数为(n-m),n为总个数。
点赞
回复
分享
发布于 2018-04-02 19:00
尤里卡斯特
楼主
华南理工大学 算法工程师
头条的算法题,真难!
点赞
回复
分享
发布于 2018-04-02 19:42
=..=
腾讯_天美_研发工程师(准入职)
空间是O(1)应该是有条件的,猜测是数字从1-n连续,其实就是给了你排好序的数组,把链表遍历一遍,记录不需要变的个数count,n-count就行了
点赞
回复
分享
发布于 2018-04-02 19:55
已删除
你有没有问条件,比如这n个数范围,是范围内随机数,还是1-n,是有重复还是没有重复数字,单链表还是双向链表,条件不同,做法就不同
点赞
回复
分享
发布于 2018-04-02 21:28
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
还没有回复哦~
相关推荐
01-24 15:58
小米集团_nlp算法工程师(实习员工)
网易有道 算法大模型实习二面(2025.01.24) 45min
1、自我介绍2、直接开始写一道算法题,字符串处理的3、反问算法题还得练,没写出来了,就写出来了一个框架,很多细节处理不是很熟练。然后就让我反问,我说,不问一些其他问题吗?面试官说上一面在项目上聊了很多了,这一次面试就不问了。面试官说代码逻辑没问题,但是还有很多没实现,她还说很多人逻辑都写错了,她觉得很奇怪,不知道为什么。不知道还有没有机会,感觉应该是被网易送走了,继续加油吧。#算法##大模型算法工程师##面经#
查看2道真题和解析
点赞
评论
收藏
分享
01-15 09:17
Monash University Java
25届 推广搜 准备春招
Top50本硕在Java后端自闭的一天,最近在想转岗的事情,后端实在干不下去了,感觉后端不适合我,每天面对没有生命的各种Class和Interface,感觉太无趣了。想转算法了,听同学说,大模型,CV,NLP似乎都对于论文和实习的要求很高,推广搜好像比较简单一些。想0基础转推广搜了,求求各位佬的建议,推荐转吗?如果转的话大概需要多少时间的学习周期啊?因为自己看了一下推广搜的八股似乎是比Java少很多的。最后求求看有无25春招的友友一起准备一起交流的,有的话可以评论or私信。
点赞
评论
收藏
分享
01-17 12:48
门头沟学院 Java
字节一面挂复盘
tl:12.6投递,12.27约1.2面试。面试官一上来先介绍业务自我介绍实习拷打(但面试官好像没听懂)一道逻辑题和一道两数之和,逻辑题想了一会说出来了,两数之和在后面扩展的时候不是最优解redis数据类型redis持久化sql优化反问面了大概60多分钟,两个工作日后给hr打电话hr直接挂电话发感谢信。想问下这种情况挂是因为实习经历没讲明白还是算法题没做出来最优解,还有鼠鼠是不是后续就跟字节无缘了
点赞
评论
收藏
分享
01-23 14:51
东南大学 Java
小红书电商后端开发日常实习一面 2024.12.24
45min左右,其中算法20min非科班为什么想要转码呢自我介绍1.介绍项目2.双写一致性3.项目里用到了缓存商家信息,那说说穿透,击穿,雪崩是什么,怎么处理?4.关注好友怎么实现的,查看好友的关注列表怎么实现。set数据类型怎么存储5.刚刚说到了限流,限流算法了解吗6.手撕:最长回文子串说说你的算法的时间复杂度12.25挂了转码三个月,12.21开始投简历之后的第一面,还是很感恩有面试机会的
查看9道真题和解析
点赞
评论
收藏
分享
01-16 13:14
已编辑
北京大学 机器学习
字节跳动推荐算法面经
tiktok国际化电商直播推荐算法1. 介绍项目背景2. 推荐链路是怎么运作的 有哪些模块3. 如何做排序模型的迭代4. 用过的大数据框架5. 优化器的原理6. PPO的原理,损失函数7. 写Prompt的经验8. SFT的经验9. 代码:TOP K大的数10. 反问:团队做的方向一面过,等二面。 #字节##字节跳动##字节求职进展汇总##面试##面试经验##算法#
查看18道真题和解析
字节求职进展汇总
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
招聘动态
查看更多
26届实习生双选会报名开启
26届实习软件笔试必刷题单
京东 TET管培生
全站热榜
更多
1
...
985计算机老学长掏心窝子:当年我踩过的坑,希望你们能绕开
1.7W
2
...
想要在大厂生存必须要学会提效
4706
3
...
字节飞书后端面试
3930
4
...
腾讯实习基地-ieg-Level Infinite-一面
3855
5
...
2.17校招&实习招聘信息汇总
3624
6
...
重生归来,鼠鼠接手北区业务,这一次......
3179
7
...
腾讯s3事业线 一面凉经
2995
8
...
【已挂】影石Insta360|嵌入式软件|日常实习一面
2441
9
...
面试汇总
2201
10
...
不要期待未来
2134
创作者周榜
更多
正在热议
更多
#
读研or工作,哪个性价比更高?
#
23712次浏览
322人参与
#
科大讯飞求职进展汇总
#
258753次浏览
2594人参与
#
秋招感动瞬间
#
10591次浏览
101人参与
#
如果重来一次你还会读研吗
#
154225次浏览
1691人参与
#
你最满意的offer薪资是哪家公司?
#
11678次浏览
109人参与
#
文科生还参加今年的春招吗
#
3204次浏览
27人参与
#
长光卫星求职进展汇总
#
27540次浏览
183人参与
#
选择和努力,哪个更重要?
#
41605次浏览
470人参与
#
打工人的工作餐日常
#
24649次浏览
221人参与
#
招聘要求与实际实习内容不符怎么办
#
40135次浏览
465人参与
#
机械人选offer,最看重什么?
#
68519次浏览
433人参与
#
机械制造岗投递时间线
#
19288次浏览
324人参与
#
机械人怎么评价今年的华为
#
180238次浏览
1484人参与
#
阿里巴巴创始人马云回国
#
13898次浏览
87人参与
#
如果再来一次,你还会学硬件吗
#
102569次浏览
1231人参与
#
影石Insta360求职进展汇总
#
107470次浏览
966人参与
#
如果公司降薪,你会跳槽吗?
#
44354次浏览
347人参与
#
正在实习的你,有转正机会吗?
#
336009次浏览
2690人参与
#
机械制造公司评价
#
98391次浏览
286人参与
#
电网求职进展汇总
#
18369次浏览
68人参与
牛客网
牛客企业服务