【校招VIP】前端算法考察之链表算法
考点介绍:
链表是一种物理存储结构上非连续的数据结构,数据的逻辑顺序是通过链表中的指针链接次序实现相互勾连。链表相对数组而言有很多不同之处,在特定场景下能发挥独特的优势。例如链表的插入和删除操作比数组效率高,数组需要改变其他元素的位置,而链表只需要改变指针的指向。
答案详情解析和文章内容可点击下方链接即可查看
一、考点题目
1.已知 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),这一步是因为:为了完成插入,新结点应该指向旧结点原来指向的元素……
2.把链表分隔成 k 部分,每部分的长度都应该尽可能相同,排在前面的长度应该大于等于后面的
解答:思路:首先遍历链表得到有效数字的个数,再求出分成k份的余数和每一份的均长,前面的部分长度加1直到余数为零。这样是为了保证长度尽可能相同的同时排在前面的长度大于后面的,例如将长度为5的链表分成三份,余2,每一份长度为1,将余下的加到前面,即[ [1+1], [1+1], [1] ]……
3.求单链表中有效节点的个数(如果有头结点,不统计头结点)
解答:
1
2
3
4
5
6
7
8
|
public static int getLenth(Node head){ if (head.next == null ) { return 0; } int lenth = 0; //让辅助指针指向头结点的下一个,就没有统计头结点 Node temp = head.next; …… |
4.单向链表已经可以实现非连续存储,为什么还需要双向链表?()
A.O(N*M)
B.O(N*M*logN)
C.0(N)
D.O(M)
正确答案: B,将 N 条长度均为 M 的有序链表进行合并,合并后的链表也保持有序。为了解决这个问题,我们可以采用分治法和优先队列(如最小堆)……
(答案点击下方链接查看哦)
二、考点文章
1.【校招VIP】前端必备算法--链表
链表是一种物理存储单元上非连续、非顺序的存储结构。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域……
2.常见算法总结 - 链表篇
本文总结了常见高频的关于链表的算法考察。1.如何找到链表的中间元素?我们可以采用快慢指针的思想,使用步长为1的慢指针和步长为2的快指针,当快指针抵达链表末尾时,此时慢指针指向的即为中点位置……
3.【校招VIP】2022秋招-前端学习记录-算法/链表入门
1)、从斐波那契数列入门 ;2)、js怎么实现链表:单向链表代码实现;3)、以上 简单了解链表,继续牛客网算法题……
三、考点视频
1.用jquery写出找到同前元素
普通难度,但是注意里面有一个坑,就是当前元素可能没有第二个兄弟结点。考察三个点, 分别是siblings、判断结点存不存在、eq.……
移动端链接:https://m.xiaozhao.vip/dTopic/detail/1161
PC端链接:https://xiaozhao.vip/dTopic/detail/1161
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2022-09-06 【校招VIP】[前端][二本][5分]简历的板式比较标准