00:01
行,那接着呢,我们再往后看了,那其实讲到这块的话呢,我们关于二维数组的这个课后练习题呢,就算说完了,那么我们这一章的重点呢,就是讲如何大家呢去使用一位数组,如何呢使用二位数组,每一个这个我们讲的时候呢,都说了六种情况,就咱们复习的时候呢,说的这六个点啊,大家把这六个点的话呢,每一个点呢都要清楚,那后边呢,关于数独的使用呢,都出不了这六个点啊,那么为了更好的体会大家这个这个这个让大家呢能够去使用我们这个数组,后边呢,我专门呢再列了一下,就关于数组中涉及到的一些常见的算法题的一个考察。啊,就是数组这块呢,开发中用逃不出咱们讲的这六个知识点,但是呢,它用起来呢非常的灵活,就比如说现在咱们讲的这个阳灰三角一样,因为这里边有什么陌生的点吧,知识点上呢,其实都没有啊,就是一个定义和赋值啊,包括便利等等啊,包括这个属性less的使用啊,但是呢,这个题你可能不太会做。
01:00
啊,就跟咱们前面说的那个流程控制一样啊,流程控制本身呢,这个知识点上大家没有盲区了,但是呢,你可能做一道涉及到一些所谓的算法题的时候呢,还是不太会,那又因为咱们开发中数组用的又比较多,所以这块的话呢,也给大家呢总结了一下数组中常见的算法有哪些啊,是这样子的啊。嗯,刚才呢,我说这个开发中用的数组呢比较多,这个呢是应该这样去理解啊,就真正的我们代码里边自己去造数组的情况,实际上也比较有限,咱们呢,后期其实用集合用的多一些,但是集合里边呢,基本上用的都是数组。啊,所以从这个层面理解的话呢,所以叫数组呢,其实也用的比较多啊,是这种啊,那为什么后边用数组,咱们呃一后边用集合,咱们讲到集合的时候呢,再给大家说啊,那咱们下面来讲这个知识点,叫数组中涉及到的常见算法,那这呢,我罗列出来了这样的四种。啊,就是分分这个步骤的,咱们去讲啊,第一类的话呢,就关于数组元素的一个赋值的情况啊,数组元素赋值情况,然后第二呢,就是针对于数值型的这种数组的元素求最大最小平均和总和的情况,那第三个呢,数组的一个复制,数组的反转,数组的查找啊然后最后一个关于数组的排序啊,数组排序好,那接下来我先说一下,在大家找工作的时候呢,笔试面试当中啊,常考的都有哪些啊,常考的话呢,第一个问题。
02:31
参考。啊,一会儿咱们举例子,然后呢,下边这块呢,这个查找这块呢,可能会出现频率稍微低一些,尤其是二分法查找这块啊,要出呢也是二分法,嗯,关于数组的排序,这个呢,出的比较多啊,这就涉及到很多的排序方式的,比如说让你写一个冒泡排序,让你写一个快速排序,手写的啊哎,这呢就是我们考察的点,这个呢,这块考察多,这块考察的也要多一些。
03:00
那这两个要非要再举个例子的话呢,它要更多一些。啊,就是需要大家还是需要具备一些基本功的啊。好,首先呢,我们先看第一个问题,叫数组元素的赋值,这呢在呃,大家尤其是笔试当中哈,是一类题目,就是给你出个题,让你呢给他来输出一个什么效果的一个数据,那其实比如咱们刚才说的这个杨辉三角就是一种情况。哎,这个阳灰三角的话呢,它其实明确告诉我们说这是一个数组问题了,也告诉你说用二维数组去实现,哎,那只需要呢,你把这个二维数组造出来以后,赋值的时候呢,按照我这个规律去赋就行,这就是来考察这个元素赋值的啊,那除了这道问题,还有几道别的题,比如说我下边列出来的这道问题。啊,这也是之前咱们一个同学笔试的时候呢,考察这道题啊,猛一看呢,还挺简单的,看看啊说创建一个长度为六的int型数组,这这肯定都会啊,啊要求呢,数组的元素的值呢,在一到30之间。
04:08
那我们去附一个指定范围的随机数,咱们前面也讲过了,咱们讲那个前面有个那个彩票题是吧?哎,那个讲过了啊,这个大家也也能搞定啊,随机附的啊,随机附的这也能搞定,然后呢,同时要求元素的值各不相同,这个呢是一个针对这道问题的一个难点。虽然是随机付的,但是我要求每一个元素不一样。猛一看,好像还挺简单的。自己写一写,你可能会发现里边有些坑,就是我们怎么去保证这个元素的值不相同,这是这道题的一个难难点的地方了啊,那这个题呢,其实你也可以看成什么呢?就是大家这个有同学买彩票不?有卖的啊,呃,就是我也有些同学就他们就是就可能不太一样啊,我是一般都不买,但他们呢,就一般吃饭的时候呢,诶正好买彩票的顺便呢,零钱就买了,经常买,呃一种习惯嘛,是吧?买彩票的时候呢,有一种就是随机生成嘛,呃你像这个呢,你也可以看成是一种彩票的一种这个玩法是吧?哎就是呢,出来六个数啊,这六个数的话呢,都不一样啊,它有个范围啊,是一到30之间的,哎你就相当于是你给我随机呢,诶生成一个彩票,哎,那这时候呢,它就是给你随机生成了这样的一些数啊,按照指定这个范围,而且呢,诶不能够重复。
05:32
啊,你又可以看成是我们这个算法来做的啊,那这个题的难点在哪?刚才说了,那我们怎么去剖析这道问题,先把这个数组造出来。动态初始化吧,对,然后接着去赋值,赋值的时候呢,你赋第一个值还没事,涉及不到跟别人重复啊,当你赋第二个值的时候呢,需要怎么办?对,你敷完以后呢,是不是紧接着需要跟第一个比较一下,你看它俩是不是一样不一样,那就下一个,如果一样了呢,一样的话是不是得重新付啊,得重新付完以后不是就完事了啊,你付完以后是不是可能还一样?对,重新付完以后还得比,直到呢出现你这个元素跟前面的不一样了,再下一个。
06:18
嗯,再下一个,再下一个,比如附到这个了,这个元素能不能写到这是不是得取决于跟前面是不是一样,那你跟前边的每一个都得比,都比完,如果不一样放这,如果呢,跟第三个元素一样了,把这个元素重复一遍。有的同学写这个代码的时候呢,如果出现第五个一样了,他就从头开始付哈。虽然说你运行的时候呢,看着没啥区别,一眨眼就都出来了,但是显然你这个效率就差一些。就是你这个要跟前面一样了,因为前面你好不容易都让它不一样了,到这个时候呢,如果出现跟前面一样,就把它改一改就完了啊,把它呢,改完以后呢,还得再去比啊,又一样了,还得付再去比,直到呢不一样为止。
07:05
哎,这是这个题的一个难点,你怎么保证我右复以后呢,还得去比,直到呢,它不一样的时候呢,开始下一个这个代码你得看看怎么写啊,那一直到最后一个就完事啊,这个题呢,我就不讲了啊,就不讲了啊,这个大家如果你想看这个题目该怎么去做的话,你可以自己先试着做一做啊,嗯,你想知道他具体怎么做的话,我在这儿。哎,给大家发的这个客户里边呢,有这道题啊,方式一方式二,你可以下边呢,稍微看一看也行。啊,如果说呢,你关于这个一维数字二维数组还没整明白呢,这个就不要看了。啊,这个呢,也只是呢,拓展拓展你的这个解题思路而已啊好,这是一道题,还有一个题,这也是咱们之前的一个导学员哈,就是毕业的时候呢,去去去笔试面试,然后呢,花了一个多小时啊到那个公司了啊在北京基本上你到面试的那个点怎么也得一个小时以上,以小时为以一个小时为单位的是吧,到那以后的话呢,他那家公司也比较奇葩啊,就没有很多的,就是大家去找工作的时候呢,通常都会有笔试啊,先把笔试过了以后呢,然后呃,先去跟人事聊是吧,人事跟你聊完以后呢,哎,先做一个笔试题,做完笔试题了,然后诶拿着这个笔试题呢,找这个面试官,哎,有的面试官呢,是拿着这个笔试题啊,先看你的笔试题情况,然后里边可能抽血题呢,就开始问了,诶另外呢,拿着你的简历啊,简历的话呢,你得准备好,他从你写简历的这个主要技能里边第一条开始,你得准备好啊,他每一条可能要每一条都要问啊,就是大家的功底还是要扎实一些的得啊,诶后边呢,还有一些项目经验,也要看你项目当中具体怎么用的是吧,你是承担什么样的责任。
08:41
真的是吧,行,这个咱们后边再讲啊,现在不说那个事了,那他呢,就过去以后的话呢,跟人事聊完以后,然后也是给了笔试题了,结果这笔试题呢,很奇葩,就只有一道题啊,就是我下边要说的这道题啊,说呢,嗯,这个这样的一道算法题,如果呢,我从这个控制台输出一个四。
09:04
哎,希望呢,呃,先说一个简单的啊,如果我从控制台输出一个三。哎,那希望呢,打印这样的一个特点的数据,那就是123,然后456789。就是这样的一个数据,你自己呢去想它的规律啊,那如果我输入的是个512345678912345啊十十一十二十三十四十五十六啊十七十八十九二十等等等等,基本上你也知道了。就是我输入的是几,你就造一个这样的一个行列的一个,其实是个矩阵了啊,数学这样的一个概念啊矩阵,然后呢,嗯,这个赋值的时候呢,是这种规律负的。还还还得有一层吧。
10:03
12345啊没了啊这样,哎,你最后附到你里边没有复过制的那个元素终止结束,哎,把这种题目呢,我称我称作叫回形术了啊。就是你负这个值的时候呢,它就这样转着负。嗯,然后呢,一直停啊,我这要写个15呢,那就是十五行15列啊这样啊,你自动的让它去生成。啊,那个同学呢,就在这做,做了十分钟,实在没有思路啊,然后呢,就说算了啊,其实还就是即使这个题你不会做,其实也可以跟这个面试官再接着去聊的啊,这就涉及到有的时候呢,大家做的这个笔试题,面试的时候呢,他不看啊,他就根本不关注啊,结果这个同学呢,没有经验,他第一次去面试哈,这个题不会,然后也没跟人家人事说,直接呢就就走了,就。啊,就前后就花了十分钟在那啊,然后来回的路上的时间快三个小时了,就是吧,啊就是其实可以去再去聊一聊的啊,啊要去聊一聊的行,那不说那个问题了,关键我们回归到这道问题上啊,这个题说实话你要在那个场景下做呢,还是稍微有点难度的。
11:08
啊哎,首先呢,这道问题给你以后呢,你得先有一个载体,我怎么着去输出它,这不就跟一个阳位三角一样吗。一二三角只不过是个三角形的情况,这是一个矩形的情况了。其实呢,是不是也得用一个二维数组去承接这些数据啊,嗯,对,那关键呢,这道题也是,是不是给这个数组的元素赋值得有一个规律啊。哎,这是这道题的难度的点哈,这道题的话呢,我也不想在这讲了,这个没有太大意义,花很多时间,意义有限哈,大家呢,有兴趣的话呢,你看一下我下边呢,诶诶下边呢,给大家哎也附了这个答案了啊,写了两种方式。啊,你要是觉得自己这个现在我们讲的这个内容呢,都感觉还还挺OK的啊,你也可以下来看一看,拓展拓展你的解题思路啊,如果说那个一维二维数组还没整明白,这个还是就先放一放,不要去研究了,因为你也不一定就碰到这个原题是吧,就是在算法题这块呢,大家想毕业时候碰到这个原题的概率极低啊,啊,但是非这种算法题,比如我们后边讲说这是大家面试的时候一道高频的题,那这个高频是真的是高频。
12:15
啊,就是你去十加的话呢,八加可能都会考到的题,这叫高频的题啊,那像这种算法题呢,你指望碰到一些原题的可能性不大啊,所以呢,我们做它的意义呢,就是大家呢,你要拓宽拓宽一下你的解题思路啊,那这道题本身的话呢,这个就不去关注了啊,这个我也不讲了,至少让大家知道一类问题,就是说在这个你去考察的时候,笔试面试也好啊,它其中一类问题呢,就是关于数组的元素赋值,让你出来一个挺有特点的一堆数,那你得先考虑到它是不是需要用数组的问题来解决,哎,那如果是的话呢,下边的中心就是这个元素怎么按照人家给的这个规律去赋值,那你就呢,看你的这个。逻辑能力了是吧?好,这是我们说的第一类问题啊。
我来说两句