考点介绍:
链表是校招面试里手撕代码出现频度比较高的题型,三线和中小厂会考察简单的链表反转,大厂会进一步考察复杂度和双指针问题,比如中间元素、是否存在环等
答案详情解析和文章内容点击链接即可查看!
一、考点题目
1.一个长度为n的单向链表,用O(1) 空间复杂度来实现倒转输出,使用最低时间复杂度
解答:空间思路为O(1),则不能使增加空间排序的方法,只能通过变换指针指向完成倒排……
2.找出单链表的中间元素,要求用时最少
解答:最简单实现,先遍历一遍链表,取得长度n;再遍历一遍,取n/2的位置的结点……
3.单链表中是否有环,写出代码
解答:一个指针只能遍历,没有办法做出判断;尝试两个结点,两个结点通常是slow走一步,fast走两步……
4.如果单链表中是有环,请找到环的入口点
解答:设置两个指针,一个放在相遇点,一个放在链表头结点,当两者第一次相遇时,就得到环入口点P……
二、考点文章
那些前端用js手搓出来的算法与数据结构(一)链表篇
通过 快、慢指针找链表中点,然后反转链表,比较两个链表两侧是否相等,来判断是否是回文链表,同时回文链表是很多大厂特别喜欢考的算法题
三、考点视频
分别使用冒泡和快速排序
本题重点在于考查数据结构的排序算法,小讲分别使用了简单的冒泡排序和复杂的快速排序,从思路到实现
pc端专题链接:https://xiaozhao.vip/dTopic/detail/170
移动端专题链接:https://m.xiaozhao.vip/dTopic/detail/170