欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    24数据结构与算法面试题21题Word下载.docx

    • 资源ID:19312820       资源大小:3.88MB        全文页数:30页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    24数据结构与算法面试题21题Word下载.docx

    1、(4)折叠法: 将关键字分割成位数相同的几部分,然后取这几部分的叠加和作为散列地址。(5)除留余数法: 取关键字被某个不大于散列表表长 m 的数 p 除后所得的余数为散列地址, 即: h(key) = key MOD p p m(6)随机数法: 选择一个随机函数,取关键字的随机函数值为它的散列地址, 即: h(key) = random(key)5、排序二叉树首先如果普通二叉树每个节点满足:左子树所有节点值小于它的根节点值,且右子树所有节点值大于它 的根节点值,则这样的二叉树就是排序二叉树。插入操作首先要从根节点开始往下找到自己要插入的位置(即新节点的父节点);具体流程是:新节点与当前节 点比

    2、较,如果相同则表示已经存在且不能再重复插入;如果小于当前节点,则到左子树中 寻找,如果左子树为空则当前节点为要找的父节点,新节点插入到当前节点的左子树即可;如果大于当前节点,则 到右子树中寻找,如果右子树为空则当前节点为要找的父节点,新节点插入到当前节点的右子树即可。删除操作删除操作主要分为三种情况, 即要删除的节点无子节点,要删除的节点只有一个子节点,要删除的节点有两个子节点。1.对于要删除的节点无子节点可以直接删除,即让其父节点将该子节点置空即可。2.对于要删除的节点只有一个子节点,则替换要删除的节点为其子节点。3.对于要删除的节点有两个子节点, 则首先找该节点的替换节点(即右子树中最小的

    3、节点),接着替换要删除的节点为替换节点,然后删除替换节点。查询操作查找操作的主要流程为:先和根节点比较,如果相同就返回, 如果小于根节点则到左子树中归查找,如果大于根节点则到右子树中递归查找。因此在排序二叉树中可以很容易获取最大(最右最深子节点)和 最小(最左最深子节点)值6、 前缀树前缀树(Prex Trees 或者 Trie)与树类似,用于处理字符串相关的问题时非常高效。它可以实现快速检索,常用于字典中的单词查询,搜索引擎的自动补全甚至 IP 路由。下图展示了“top”, “thus”和“their”三个单词在前缀树中如何存储的:7、红黑树红黑树的特性(1)每个节点或者是黑色,或者是红色。

    4、(2)根节点是黑色。(3)每个叶子节点(NIL)是黑色。 注意:这里叶子节点,是指为空(NIL 或NULL)的叶子节点! (4)如果一个节点是红色的,则它的子节点必须是黑色的。(5)从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。左旋对 x 进行左旋,意味着,将“x 的右孩子”设为“x 的父亲节点”;即,将 x 变成了一个左节点(x成了为 z 的左孩子)!。 因此,左旋中的“左”,意味着“被旋转的节点将变成一个左节点”。右旋对 x 进行右旋,意味着,将“x 的左孩子”设为“x 的父亲节点”;即,将 x 变成了一个右节点(x成了为 y 的右孩子)! 因此,右旋中的“右”,意味着“被

    5、旋转的节点将变成一个右节点”。添加第一步: 将红黑树当作一颗二叉查找树,将节点插入。第二步:将插入的节点着色为红色根据被插入节点的父节点的情况,可以将当节点 z 被着色为红色节点,并插入二叉树划分为三种情况来处理。 情况说明:被插入的节点是根节点。处理方法:直接把此节点涂为黑色。 情况说明:被插入的节点的父节点是黑色。什么也不需要做。节点被插入后,仍然是红黑树。 情况说明:被插入的节点的父节点是红色。这种情况下,被插入节点是一定存在非空祖父节点的;进一步的讲,被插入节点也一定存在叔叔节点(即使叔叔节点为空,我们也视之为存在,空节 点本身就是黑色节点)。理解这点之后,我们依据叔叔节点的情况,将这

    6、种情况进一步划分为 3 种情况(Case)第三步: 通过一系列的旋转或着色等操作,使之重新成为一颗红黑树。删除第一步:将红黑树当作一颗二叉查找树, 将节点删除。这和删除常规二叉查找树中删除节点的方法是一样的分 3 种情况: 被删除节点没有儿子,即为叶节点。那么,直接将该节点删除就 OK 了。 被删除节点只有一个儿子。那么,直接删除该节点,并用该节点的唯一子节点顶替它的位置。 被删除节点有两个儿子。那么,先找出它的后继节点;然后把“它的后继节点的内容”复制给“该节点的内容”;之后,删除“它的后继节点”。通过旋转和重新着色等一系列来修正该树,使之重新成为一棵红黑树。因为第一步中删除节点之后,可能会

    7、违背红黑树的特性。所以需要通过来修正 该树,使之重新成为一棵红黑树。选择重着色 3 种情况。 x 是“红+黑”节点。直接把 x 设为黑色,结束。此时红黑树性质全部恢复。 x 是“黑+黑”节点,且 x 是根。什么都不做,结束。 x 是“黑+黑”节点,且 x 不是根。这种情况又可以划分为 4 种子情况。这 4 种子情况如下表所示:参考: 代码实现:8、B-TREEB-tree 又叫平衡多路查找树。一棵 m 阶的 B-tree (m 叉树)的特性如下(其中 ceil(x)是一个取上限的函数) :1.树中每个结点至多有 m 个孩子;2.除根结点和叶子结点外,其它每个结点至少有有 ceil(m / 2)

    8、个孩子;3.若根结点不是叶子结点,则至少有 2 个孩子(特殊情况:没有孩子的根结点,即根结点为叶子结点,整棵树只有一个根节点);4.所有叶子结点都出现在同一层,叶子结点不包含任何关键字信息(可以看做是外部结点或查询失败 的结点,实际上这些结点不存在,指向这些结点的指针都为 null);5.每个非终端结点中包含有 n 个关键字信息: (n, P0, K1, P1, K2, P2, , Kn, Pn)。其中:a)Ki (i=1. n)为关键字,且关键字按顺序排序 K(i-1) Ki。b)Pi 为指向子树根的接点,且指针 P(i-1)指向子树种所有结点的关键字均小于 Ki,但都大于 K(i- 1)。

    9、c)关键字的个数 n 必须满足: ceil(m / 2)-1 = n 从后往前比较的索引,结束第一次循环,此时,对于基准值来说,左右两边就是有序 的了。9、希尔排序算法基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记 录“基本有序” 时,再对全体记录进行依次直接插入排序。1.操作方法:选择一个增量序列 t1, t2, , tk,其中 titj, tk=1;2.按增量序列个数 k,对序列进行 k 趟排序;3.每趟排序,根据对应的增量 ti,将待排序列分割成若干长度为 m 的子序列,分别对各子表进行直接插入排序。仅增量因子为1 时,整个序列作为一个表来处理

    10、,表长度即为整个序列的长度。10、归并排序算法归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若 干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。11、桶排序算法桶排序的基本思想是: 把数组 arr 划分为 n 个大小相同子区间(桶),每个子区间各自排序,最后合并计数排序是桶排序的一种特殊情况,可以把计数排序当成每个桶里只有一个元素的情况。1.找出待排序数组中的最大值 max、最小值 min2.我们使用 动态数组 ArrayList 作为桶,桶里放的元素也用 ArrayList 存储。桶的数量为(maxmin)/arr.leng

    11、th+13.遍历数组 arr,计算每个元素 arri 放的桶4.每个桶各自排序12、基数排序算法将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始, 依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。13、剪枝算法在搜索算法中优化中,剪枝,就是通过某种判断,避免一些不必要的遍历过程,形象的说,就是剪去了 搜索树中的某些“枝条”,故称剪枝。应用剪枝优化的核心问题是设计剪枝判断方法,即确定哪些枝条应 当舍弃,哪些枝条应当保留的方法。14、回溯算法回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发

    12、现已不满 足求解条件时,就“回溯”返回,尝试别的路径。15、最短路径算法从某顶点出发,沿图的边到达另一顶点所经过的路径中,各边上权值之和最小的一条路径叫做最短路 径。解决最短路的问题有以下算法, Dijkstra 算法, Bellman-Ford 算法, Floyd 算法和 SPFA算法等16、最小生成树算法现在假设有一个很实际的问题:我们要在 n 个城市中建立一个通信网络,则连通这 n 个城市需要布置n-1 一条通信线路,这个时候我们需要考虑如何在成本最低的情况下建立这个通信网?于是我们就可以引入连通图来解决我们遇到的问题, n 个城市就是图上的 n 个顶点,然后,边表示两个城市的通信线路,

    13、每条边上的权重就是我们搭建这条线路所需要的成本,所以现在我们有 n 个顶点的连通网可以建立不同的生成树,每一颗生成树都可以作为一个通信网,当我们构造这个连通网所花的成本 最小时,搭建该连通网的生成树,就称为最小生成树。构造最小生成树有很多算法,但是他们都是利用了最小生成树的同一种性质: MST 性质(假设N=(V,E)是一个连通网, U 是顶点集 V 的一个非空子集,如果(u, v)是一条具有最小权值的边,其中 u 属于 U, v 属于 V-U,则必定存在一颗包含边(u, v)的最小生成树),下面就介绍两种使用 MST 性质生成最小生成树的算法:普里姆算法和克鲁斯卡尔算法。17、AES高级加密

    14、标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:18、RSARSA 加密算法是一种典型的非对称加密算法,它基于大数的因式分解数学难题,它也是应用最广泛的非对称加密算法。非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解 密。19、CRC循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传

    15、输或者保存后可能出现的错误。它是利用除法 及余数的原理来作错误侦测的。20、MD5MD5 常常作为文件的签名出现,我们在下载文件的时候,常常会看到文件页面上附带一个扩展名为.MD5 的文本或者一行字符,这行字符就是就是把整个文件当作原数据通过 MD5 计算后的值,我们下载文件后,可以用检查文件 MD5 信息的软件对下载到的文件在进行一次计算。两次结果对比就可以确保下载到文件的准确性。 另一种常见用途就是网站敏感信息加密,比如用户名密码,支付签名等等。随着 https 技术的普及,现在的网站广泛采用前台明文传输到后台, MD5 加密(使用偏移量)的方式保护敏感数据保护站点和数据安全。21、更多算法练习更多算法练习题,请访问 https:/leetcode-


    注意事项

    本文(24数据结构与算法面试题21题Word下载.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开