首页 > 编程语言 >【校招VIP】前端算法考察之链表算法

【校招VIP】前端算法考察之链表算法

时间:2023-09-06 09:45:23浏览次数:47  
标签:结点 VIP pNew 链表 算法 link pPre 指针

考点介绍:

链表是一种物理存储结构上非连续的数据结构,数据的逻辑顺序是通过链表中的指针链接次序实现相互勾连。链表相对数组而言有很多不同之处,在特定场景下能发挥独特的优势。例如链表的插入和删除操作比数组效率高,数组需要改变其他元素的位置,而链表只需要改变指针的指向。

答案详情解析和文章内容可点击下方链接即可查看

一、考点题目

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

 

标签:结点,VIP,pNew,链表,算法,link,pPre,指针
From: https://www.cnblogs.com/rdaxue/p/17681472.html

相关文章

  • 扩展欧几里得算法
    扩展欧几里得算法问题引入求\(ax+by=\gcd(a,b)\)的一组整数解。前置知识欧几里得算法当\(a,b\)为非负整数时,以下等式一定成立。\[\gcd(a,b)=\gcd(b,a\bmodb)\]裴蜀定理对于任意非负整数\(a,b\),一定存在满足的整数对\((x,y)\),使得以下等式成立。\[ax+b......
  • 算法衡量优劣之时间复杂度
     选型我们假定计算机执行算法每一个基本操作的时间是固定的一个时间单位,那么有多少个基本操作就代表会花费多少时间单位,由此可以忽略机器环境的影响而客观的反应算法的时间效率代码执行总时间(T)=操作步骤数量*操作步骤执行时间 算法时间复杂度是用来描述算法在......
  • 代码随想录算法训练营第十四天|二叉树的递归法、迭代法
    二叉树的递归遍历(前中后序遍历-递归法与迭代法)递归三部曲:确定递归函数的参数和返回值确定终止条件确定单层递归的逻辑递归法对二叉树进行前中后序遍历(力扣144.145.94.)//前序遍历·递归·LC144_二叉树的前序遍历classSolution{publicList<Integer>preorderTra......
  • Java实现常见排序算法
    Java实现常见排序算法排序也称排序算法(SortAlgorithm),排序是将一组数据,依指定的顺序进行排列的过程。排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。常见的排序算法分......
  • 数据结构代码题-链表
    链表单链表单链表结构体的声明:typedefstructLink{ intdata;//代表数据域 structLink*next;//代表指针域,指向直接后继元素}link;//link为节点名,每个结点都是一个link结构体另一种:typedefstructLNode{ElemTypedata;structLNode*next;}LNode,*Link......
  • 找质数(图算法)、交错字符串(字符串、动态规划)、有效数字(字符串)
    找质数(图算法)找出大于200的最小的质数解答:importjava.util.*;importjava.lang.*;importjava.io.*;classIdeone{publicstaticvoidmain(String[]args)throwsjava.lang.Exception{intn=201;while(true){booleanb=tru......
  • 梯度上升算法
    用梯度上升算法进行Logistic回归$w=w+\nabla{f(w)}$对应代码如下importmatplotlib.pyplotaspltimportnumpyasnpfromsklearn.datasetsimportmake_classificationdata_1,labels=make_classification(n_samples=400,n_features=2,n_informative=2,n_redundant=0,n_......
  • 随机森林算法如何用代码实现
    随机森林是一种集成学习算法,通过组合多个决策树来进行分类和回归任务,从而提高预测的稳定性和准确性。以下是使用Python中的sklearn库实现随机森林算法的基本示例:fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.ensemb......
  • 深度神经网络中基于卷积操作的自适应学习算法研究
    本文提出了一种基于卷积操作的自适应学习算法,用于深度神经网络中。该算法通过引入复杂的数学公式和高阶张量操作,实现了对复杂模式的准确建模和学习。我们通过对网络架构的改进和参数的优化,提高了模型的泛化能力和性能表现。实验结果表明,我们的算法在多个基准数据集上取得了优于现有......
  • 遗传算法
     遗传算法(GeneticAlgorithm)是一种基于自然选择原理和自然遗传机制的启发式搜索算法。该算法通过模拟自然界中生物遗传进化的自然机制(选择、交叉和变异操作),将好的遗传基因(最优目标)不断遗传给子代,使得后代产生最优解的概率增加示例代码如下:#导入所需的库importrandomimportmat......