00:00
同学们早上好啊,今天我们来谈第九道密试题,今天我们来谈一下a release a link list它们之间的区别是什么,那这一道题的话呢,我们会分为上下两级来谈一下,今天我们先来谈第一集,就是来谈一下网络的标准答案一般都怎么说了。好,这道题的话,我们会分两部分来谈,第一部分的话呢,是谈这个网络上的标准答案,第二的话呢,就是我们在这个标准答案的基础之上啊,我们来看到一些啊不一样的地方,OK,好,那么我们先来看第一部分啊,那第一部分的话呢,我们来看首先第一点是它俩啊底层数据结构的不同啊,这点的话非常简单啊a list的话,大家看到这个东西啊,其实我们写代码有个非常关键的一个习惯,就是贱民之意是不是,所以大家可以看到在这里面arra历史它已经旗帜鲜明的表明的它的一个底层就是arra数组啊,而大家可以看到第二个的话,也是旗帜鲜明表明它的后它的这个底层是一个链表,OK,所以的话,在这里面的话,大家也看到啊,这两个东西他们底层数据结构是不能搞混的哈,OK,所以我们经经经常以前在发现到一个同学啊,在做一些基础问答的时候呢,会发现发现很低级的错误,什么呢?就是会把这两东西搞混了哈,这是非常不可思议的,OK,所以有时候大家会归咎一个点什么就说。
01:15
啊,我是实实践派哈,实践派理论派不关注,所以这个我想说一下啊,这个东西啊,跟实践理论没有区别,没有关,没有关系啊,没有什么所谓的理论派实验派,咱们这个做开发的就是踏踏实实的要做开发,动动手干活东西,但是的话呢,你写代码的时候是必须要什么,必须要理有大家理解去写代码,而不是照着写代码,这是有差异的啊,而且呢,你越来往后,你去看很多的中间键啊,这些东西的里边的原理啊,源码这些东西的话呢,你都是需要有背后这个底层这个深厚的原理支撑的啊,这样你看起来会更轻松一些啊好,所以到这里面来,所以这个地方的话呢,我希望大家同学不能再再再刚再搞错了啊,太简单了是吧,很明显啊,很明显,好,咱们再往后看,那接下来有了基于这么一个底层的里里,这个底层的数据结构的差异化之后呢,接下来我们再来看一下一个非常常规的一个网络上的标准答案啊。
02:10
咱们来看一眼,先来说这个标准答案的一个说法啊,咱们看一下第一个的话呢,A release啊插的快。为什么快呢?很简单,是这样的数组嘛,我们知道数组是一段连续的内存空间是吧?好咱们看一下啊,咱们看一下。好,那假设呢,这里面的话,假设每一个地方呢,假如说存四个字节,那你就可以知道是这个游戏连续的,所以这个是一开始坐标是这是零是吧,零四,然后这是八,因为它可计算的,它是可计算的方式,这是12啊,这是16对不对,可计算的连续的内存空间,所以比如说到第几个就可以可以快速的算出来啊,所以它定位快啊,定位方便,但是它这个定位方面是定位到第几个是定位到第几个方便。懂我的意思吧,用到第几个方面啊,好,然后再往下看的话呢,我们再看一下删除插入慢,为什么呢?很简单,假设啊,现在我需要在这中间插入一个新元素。
03:06
那怎么办?为了保证这个内存地址是连续的啊,所以这个时候的话呢,我们需要怎么样呢,我们需要做一件事,就是把这些东西的话呢,这一块啊。给他往后挪一下,给他腾出个地,让他进能进来对吧?OK,那我如果说这边背后很多不是两个是四是20个啊,是200个,那么很显然这个挪动的空挪动就很麻烦,当然你看我这么一画,你可能觉得就收一下过去了嘛,对不对,哎,那是际上你注意一下啊,这个时候并不是收一下过去,而是他需要一个动作,什么动作呢?我得先把这个人是往这边挪下来是吧,然后呢,在挪出来之后呢,这个位置就可以别被别人占了嘛,后面这个就可以紧跟着往这边挪,哎,你看这个过程中呢,它是有一个什么,它是有一个。便利的过程啊,所以是比较耗性能的啊,OK,所以呢,这边得到一个结论是什么,就是这个结论,就是我们这一块里面啊,它的这个差距也好,删除也好,它会慢一些,但协议来说它更多,其实这个地方的话,描述的描述啊,我们下一个版本再来说这里面一些不严谨的地方啊,OK,那现在主体啊,先给大家说一下,为什么会有这个结论啊,为什么有这个结论。
04:13
好,这是数组啊,这是数组,下面我们来看一下链表啊,链表里面的查找慢,因为需要一个通过一个帧帧查找,为什么呢?链表我们来看一下链表结构是这样子的。就是这个,这时候的话呢,比如说他跟他不连续啊,他不连续,所以的话呢,他怎么玩呢,他是这样子的,他需要比如说这个指针,只要他他指向他,他呢他这样他OK可能这样,也有可能不是这样,也有可能他是这样子的,他这样他他这样他看懂意思吧,所以的话呢,就是说不是你看到这个情况,它是通过指针来决定我下一个元素是谁,所以这个时候,比如说我需要找到第四个,那就我就怎么,我就只能是叫挨个找了1234啊就这样一个找啊,不能无法计算,因为我知道只有什么,我只有知道你之后。我才知道他的下个谁,然后他就呢才知道他的下个谁,这东西有点像以前啊,咱们这个做这个,呃,组织工作,就是以前这个这个地下地下工作是吧,所以只每个人只知道什么,只知道他的上,他的前面,前面人是谁啊,他只知道他他的对接人是谁,但是再往后呢,整个组织他是不清楚的,对吧?OK,好,这就是这么一个东西啊,这么一个结构啊好,所以在这里面的话呢,咱们可以看到他说查找慢,是因为他要去定位某一个的时候啊,第几个的时候,他得一个个挨着找啊,但是呢,删入这个删除插入快,为什么呢?举个例子啊,比如说现在我在这边要插入一个元素啊,想在他们俩,就是说他们俩中间这个这个啊写一下啊,写在这个一和二之间,插入这个元素进来。
05:45
好,那这个时候怎么办呢?这个时候我们会经常听到一段话,就是我们只需要改变前后的节点值就行,是吧,怎么改变呢?诶基本上我们发现啊,就是我们经常听到这么一个答案,然后你再细问一下,你说怎么改变呢?这个大夫大概怎么写呢?先怎么改变,先改变谁,那么就发现大家呢,由于没思考过啊,所以如果思考过肯定不会答错,但是因为突然没思考过的话呢,就在这一块会摘摘来讲,OK,好,那这个东西怎么怎么插入,诶大家可以先去思考一下啊,我们后面的话呢,可以跟大家谈一谈啊。
06:15
好,所以这一块的话呢,发现它不需要动,它不要动其他元素,它只需要动这个局部的元素,所以它的性能相对会快一些,好以上呢,这一块就是我们在网络上经常看到的一个标准的答案啊呃,那么我们下节课再来谈一下一个比较不一样的说法啊,就补充细节更严谨一点啊,下个面试题见。
我来说两句