00:00
好,各位同学大家晚上好啊,欢迎大家来听朝哥聊面试啊,今天我们来谈第十六道题,我们来谈一下怎么去实现自定义的赞啊,那像这样的题目的话呢,其实考什么呢?其实就考你的基本功啊,考你在用一些东西的时候,有没有去了解它其实背后的实验原理,还有呢,就是有没有看过类似的源码,OK,好,那么遇到这种问题啊,我们来说一下怎么去破解啊,跟着来看一眼,首先呢,我们需要知道它的目标是什么,所以他说实现自定义的赞。所以这里头我心里明白,我要实现这个东西,它有什么特点,对吧?OK,如果你对它的特点不了解,那就over了是吧?用现在的网络用语叫芭比QE了,OK,好,所以这里面的话呢,我们要干嘛,我们就得有一个知道战它特点是什么,它特点我们写一下啊,叫先进后出啊,先进后出好,先进后出很简单,举一个例子,比如说我呢,是一个爱好打篮球人,所以这个时候的话呢,我们买,我又买了很多篮球,那么买又要放起来,那怎么呢?我就会把这个第一个篮球往里扔啊,再放第二个篮球,再放第三个篮球等等,OK,所以当我要去打球的时候呢,我肯定会取其中一个出来,对吧?为了方便呢,我每次都是先从上面开取,所以这时候的话就是你会发现很简单,我先放进去的这个篮球啊,是最后取出来的,先进后出的特点,就这么得到的,对吧?好在这里面的话呢,我们简单说一下,在专业术语里,这里面的话呢,像这种特点它就叫称为站,对吧,而在这个最上面的这个位置。
01:29
的我们称为站顶啊,就称为站顶,OK,然后呢,每次往里扔东西呢,我们称为入站,然后呢,往外取东西呢,我们称为出站,好所以基本上来说,对于我们来说的话呢,我们要实现的关键点是什么?是一个是入战的这个动作,其中是一个方法,第二个是一个出战这个动作也是一个方法。所以要让两者结合起来,达到一个什么效果,达到一个先进后出的效果,对不对?好,那基本上来说整个结构就有了,对吧,那下一步要干嘛呢?下一步就要分析到底怎么实现呢?所以其实非常简单啊,你看他们紧挨在一起,所以其实我们可以用一种最简单的方式是用数组,就是底层的数据结构,我们用数组来跟着我看一下啊,也就说这个时候的话呢,我们可以常用数组来实现一下,那么这个时候的话呢,怎么做呢?很简单,你看啊假设啊,我给你画一个例子啊,数组我们先画成一个一个的格子啊。
02:24
这个时候假设呢,我们要存的是abcde啊abcde好,那么第一个A我应该怎么存进去呢?这是个问题。是吧,这是个问题,A要怎么存进去呢?那很明显我需要存到哪去,所以很简单,注意看啊,这个时候我们可以以这个什么,以这个当前数量count,就是当前这个数组已经存了几个了,这个count来做为一个关键的指标,那目前第一次的话,这是个空数组,所以count很明显是等于零,对不对?所以的话呢,此刻我就可以把这个A放到第零个位置,也就是说这个时候的话就放到这边来了。
03:01
好了之后的话,不能这样就结束了,我还得把这个靠呢加一,所以这个时候的话呢,这个零就变成了一,所以第二次放个B的时候呢,他看到cut是一,他就放到了第二个位置。OK,以此类推C。De就这样放进来了,所以到此为止的话呢,我们就完成了什么,完成了入站的这个操作。OK,好,那么接下来的话呢,我们还得干嘛,还得看出战,那出战又以什么标准呢?很明显先进后出,所以我们第一个出战的东西肯定不能是A,而应该是什么E,那怎么确定是E呢?那很明显,你看其实很简单,就是我要获取数组什么最后一个元素,所以这个时候我在出战的时候的关键值是谁?不是靠的,而是什么呢?而是这个长度,整个的长度是不是,诶,OK。好,所以这个时候的话,诶,靠的其实也对啊,靠的也对,也第几个对吧?对,OK,但是呢,这个时候注意啊,因为数数组现是从零到一,对不对,从零到一,所以这个时候我应该是什么量减一,懂我意思没有啊,因为从零到一嘛,所以我比如说这边有五个是不是量应该是五五,但是呢,我们知道数组的C要从零开始,所以此刻这里面应该是四,这边应该是零,懂这意思吧,哎,所以我应该是从这里取啊,从这里取。
04:18
好,你看这样的话,每次呢,我是不是就是取到了什么,取到了最后一个,诶这样的话入战出战是不是就搞定了,对吧,非常的简单啊好,所以最后呢,我们可以看一下源码去验证一下这个说法。好了,如果大家觉得对你的这个呃有帮助的话啊,那么拜托大家点点赞啊,那这样的话呢,我们会在不断的去产出,也是需要鼓励的哈,好,那么在这里面的话呢,我们大家最后可以去看一下源码,看源码是不是正如我讲的这样啊,或者或者呢,下一次我给大家来看一下源码啊,再次验证一下这个说法。
我来说两句