考点介绍:
链表是校招面试里手撕代码出现频度比较高的题型,三线和中小厂会考察简单的链表反转,大厂会进一步考察复杂度和双指针问题,比如中间元素、是否存在环等
答案详情解析和文章内容点击下方链接即可查看!
一、考点题目
1.一个长度为n的单向链表,用O(1) 空间复杂度来实现倒转输出,使用最低时间复杂度
解答:空间思路为O(1),则不能使增加空间排序的方法,只能通过变换指针指向完成倒排……
2.找出单链表的中间元素,要求用时最少
解答:最简单实现,先遍历一遍链表,取得长度n;再遍历一遍,取n/2的位置的结点……
3.单链表中是否有环,写出代码
解答:一个指针只能遍历,没有办法做出判断;尝试两个结点,两个结点通常是slow走一步,fast走两步……
4.如果单链表中是有环,请找到环的入口点
解答:设置两个指针,一个放在相遇点,一个放在链表头结点,当两者第一次相遇时,就得到环入口点P……
5.已知 pPre 为指向链表中某结点的指针, pNew 是指向新结点的指针,以下哪段伪码算法是将一个新结点插入到链表中 pPre 所指向结点的后面?
A.pPre->link = pNew; pNew = null
B.pPre->link = pNew->link; pNew->link = null
C.pNew->link = pPre->link; pPre->link = pNew
D.pNew->link = pPre->link; pPre->link = null
解答:正确答案是 C,首先将旧结点的指针域(即pPre->Link,它存放着接下来的那个结点的地址)赋值给新结点的指针域(pNew- >Link)……
二、考点文章
1.那些前端用js手搓出来的算法与数据结构(一)链表篇
通过 快、慢指针找链表中点,然后反转链表,比较两个链表两侧是否相等,来判断是否是回文链表,同时回文链表是很多大厂特别喜欢考的算法题
2.前端必备算法--链表
链表是一种物理存储单元上非连续、非顺序的存储结构。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
3.常见算法总结 - 链表篇
本文总结了常见高频的关于链表的算法考察。
三、考点视频
1.分别使用冒泡和快速排序
本题重点在于考查数据结构的排序算法,小讲分别使用了简单的冒泡排序和复杂的快速排序,从思路到实现
pc端专题链接:xiaozhao.vip/dTopic/deta…
移动端专题链接:m.xiaozhao.vip/dTopic/deta…