【字幕】恋上数据结构与算法之012复杂度07leetcode

视频地址:012复杂度07leetcode_哔哩哔哩_bilibili

网站叫做leetcode。那Linux我相信很多同学都听过这个网站,那这个网站干嘛用呢?这个网站是用于练习算法的一个好网站,那我们这个课程在讲解知识点过程中也会不断的去用到这个网站,所以同学们以后如果你想练习一下你的算法,你完全可以在这个网站上进行练习,这个网站上面有大量的这个算法题啊,那它这个网址呢有两个,一个叫利得扣.com一个叫利得扣杠CN.com,那相信同学们也可以猜到这两个网站网站有什么区别,那这个呢是英文版的,这个是为我们中国人设计的,这个是中文版的,那我们上课呢呃就用这个,因为他们他们两个题目其实是差不多,呃只是英文版的可能题目非常多一点,但是那些题目多出来那些题目呢我们暂时来说用不上啊,所以我们直接用这个中文版呢就可以了。

好,我们来打开一下这个网站,就这个力的扣三,那为了上课给同学们演示力的扣相关东西呢,我特地注册了一个账号啊,然后我现在已经登录了,那我们想刷题怎么办呢?想再做一些算法题怎么办呢?这里有个题库,点一下题库,可以看到这里有非常非常多对吧?

那这里写着一共有852道算法题,那如果你想做针对性的练习,大家可以讲标签你看很多,比如说我想针对这个数对吧做一个练习,那这里有很多是吧,什么什么二叉树等等各种都有,如果你想练习一下这个栈,你就勾选这个栈,然后把这个树给去掉,对吧?

这些都是跟站相关的,而且这里也有难度对吧?比如简单的难度,然后中等的难度对吧?

但是实际上这个难度有时候并不是很准确啊,比如说它这里标的是中等的,其实有时候可能很简单,啊有时候他标的这个是简单的,有时候可能也不简单啊这个不好说,这个根据个人情况而定吧。

那么究竟这些题目啊哪些需要同学们去呃解决,这个我们后面讲课都会提到,比如说有些题目我建议你去做一下,我都会给你呃提一个建议,到时候我都会写在PPT里面,这个大家不用担心。

然后我们随便点进去一个吧,比如说我们点这个题目我们打开一下,那这个我们也打开一下,我们看一下这两道题目,先看这一道,那这一道你看它有问题的描述对吧?还给出一些事例,然后右边呢你就可以选择对应的编程语言来写代码,比如说你选择使用Java还是c加加等等都可以啊都可以,你你可以用你熟悉的编程语言来写,要写完之后呢这个时候你可以点击这个提交,把这个嗯答案给提交,一提交的话它就会怎么样呢?

就会告诉你你这个结果是正确还是失败,大家根据它的提示做就好了,好吧?

然后我们来试一下,比如说我点这个提交,我现在是什么都没写,你看一点提交的话,他就跟我说怎么样编译出错对吧?编译出错,那你如果你出过错,那我们点一下这个个人啊,我们点一下个人,然后我们看一下,你看这里就有,你看通过了提交什么意思啊?我提交了一次,但是零次通过说明刚刚那次提交不通过对吧?这里都会有记录的啊有记录。

那这里还有一个,这1005 1015道题目你一共解决多少道?那这里是零道说明一道都没有解决啊。那很多同学可能会想唉那有些人的这个主页里面,那这个解决题目次数越多,是不是代表这个人就越厉害呢?不是这样子的。

因为想想因为这些东西完全可以作弊,什么叫作弊呢?你思考一下那这个代码的话是不限时间,你随便写,你是完全可以去网上找到最优的解,要把这个代码粘进来,要一点提交,那这样你是不是可以保证你这里面怎么样哈每一道都是通过的对不对?

那这样其实没有意义嘛,所以这个公司很多公司面试招聘,他并不会去看你这个力的扣里面通过这个次数,因为这个是不准确的,你完全可以通过作弊对吧?

提高你的这个通过率,所以这个是没有什么参考意义。

那当然也没必要去作弊啊,因为大家用这个网站的目的是什么?目的是练习自己的算法能力,练习自己的数据结构的一个能力,对吧?

好,然后然后如如果你在上面去写这个代码,注意如果你在上面去写这个代码的话,同学们注意啊,如果你去上面去写这个代码的话,呃它是没有提示的啊,这不可能有提示,不可能像我们这个开发工具有提示,所以建议同学们怎么样呢?你把它的这个代码模板拷贝到你的开发工具上面来写,你开发工具这个写完以后呢,你再把这个代码拷贝到这里,然后再点提交就可以了,啊应该这样去做。

然后他有些题目这里有个评论看到吧?

有个评论,点一下评论。

评论里面有时候你可能会看到别人写的一些答案,也也就是说你可以参考一下别人是怎么实现的,学习一下别人怎么写的。当然有一些题目这个little它本来就有答案,比如说我们看一下这这一道什么棒球比赛这个啊,我们来看一下这个这个你会发现这里有个题解,这有个题解我们点一下,你看它这里就已经有答案了,说白了你完全可以把左边答案粘一下,要拷贝到右边要一点提交你就通过了,但是这个没有意义。

注意这个题解并不是每一道题目都有,你看刚刚的这个用栈来实现这个队列,那这个就没有吧,这个就没有题解,没有没有关系,如果你不会做,你可以看一下这个评论,看一下别人是怎么做的啊。

那么我们来看一下,那刚刚我们讲到这个斐波那契数列这个东西呢,它刚好上面就有一道有一道题目,来我们来解决一下那一道你可以在这里搜搜索,这个去掉,因为刚刚我点击了一个站的这个标签,那这样的标签里面是没有菲波纳契的,我得把它去掉,你看这有对吧?

有,但是这个好像都不是我想要的,我记得还有一道呃可能搜不到,因为我发现有时候搜索确实会有些结果没有出来,不过没有关系,我之前已经访问过了,所以应该是有记录。

Fifi唉就是这个我们看下这一道是第五百零九道,那这个我们看一下,你看这个就是他说的传一个0给你,返回零传一个一给你返回一,如果这个是大于一的,那就返回这个对吧?这个不就不是我们刚刚已经做过的吗?你看这里就有,那我们来解决一下吧,那这个怎么做啊?

那第一种做法大家想想第一种做法就是按照刚刚的呢对吧递归的,但是这种做法我们刚刚也也知道了,不行是吧?对不对?那怎么办?我们直接将我们代码拿过来嘛,我们已经做过一次了,那做过一次了,那我们就可以直接将这个东西钻过来,钻过来,然后放到我们这个位置,放到我们这个位置。

好,那正常来讲呢你就可以直接点击这个提交,但是你又不希望你一点提交的时候,他出错,你想先看一下有没有错再提交,因为你提交出错了。

你的这个刚刚那个本子上啊,刚刚那个记录上就会显示你有多少道出错,如果你不希望你的出错率比较高,你可以先点击执行代码,先尝试一下点一下,你看他说有错对吧?有错,错在什么地方呢?在这个位置那我们这个n应该写成大写对吧?

写成大写好了,这个时候我们再点一下执行代码。

好,你看没有问题,那这个就代表没有问题。

就是我们输出的结果是什么呢?是一它他c让我们输出也是一,如果我们输出跟他预期是一样的,那基本没什么问题,这个时候我们可以点一下提交,要稍等一下,这么慢我这个网速有问题啊,所以它这个运行中并不是说我运行我们代码要耗多少时间,我这个是网络有问题,你看编译时间对吧?

超长那说明就不是我们代码再提交。

好注意ok了,成功看到没有,成功他说我们这个代码呢怎么样?耗费时间0毫秒打败了百分百的用户,那说明我们这个代码性能是非常好的,但是这个也仅供参考这个也仅供参考并不是特别准,我觉得啊有时候并不是特别准,比如说有时候你很自信啊写得非常好的算法,唉但是一提交发现只打败了10%的用户是吧?

有有这种可能。

然后呢如果有时候你提交完以后呢,这里会显示呃打败多少用户,那其实你你就想唉如果打败了10%,那说明什么?说明还有90%的人比我好,那怎么办?这个时候我们点一下这个显示详情。

好,那这里我们就能看得到对吧?能看得到那些提交的时间,提交时间比较短的那些人,然后大家就可以去这个位置找,明白吧?这个位置找你看,执行时间为一毫秒的范例是什么?这样你就可以去学习唉别人的这个花费这么少的时间是怎么怎么办到的,你看这个是0毫秒是怎么写的是吧?这个是时间,时间啊越往左边时间越短,这个你可以自己去参考一下。

那再说一个问题,我们点一下这个位置,再点一下,那你看啊你看刚刚我们提交了三次,只有一次是通过,如果你觉得你的这个进展不好看对吧?放在这里不好看,那别人进了你的主页看起来好差劲的对吧?那这个提交三次只有一次才通过,你想重新再来那怎么办呢?

很简单,点一下这个位置,然后再点一下你的名字,我的档案,唉不对点错了,应该是点这个选择进度选择进度,然后你你你要先创建一个新的进度,比如说备课二点一下创建,那创建一个新的进度,你先选择用它点一下,好,你用了这个进度就意味着前面这个进度就给删掉了,我们点一下这个叉叉,一叉叉他就会问你你之前成功提交的次数有多少,我们之前通过的成功的提交其实只有一次,所以我们一他确认之后就谈到删除。

好删掉,那删掉之后再去你的这个主页点一下,那这里就是从0开始的,这个可以根据你自己的需要去自己去弄一下。

然后说到这个菲波纳切,我之前看到一个搞笑的东西啊,跟同学们分享一下什么东西呢?跟同学们分享一个搞笑的东西啊。

那斐波那契数列我们都知道它的给你一个n它其实求是什么?求的是前一个数跟前前一个数的和,对不对?然后我有一天我就在朋友圈看到一个东西,他说我是一个斐波那契程序员,为什么呢?因为我每天都在改昨天和前天的bug,那我觉得这句话挺搞笑的啊,就给同学们分享一下。

这也是有意思的跟菲博纳粹相关的一个东西,因为菲博纳粹数呢就是什么?它其实就是等于前一个数跟前前一个数的和对吧?那你是菲波纳粹程序员,那就是在每天在改昨天跟前天的bug啊,大家都是菲波纳粹程序员是吧?嗯哼。把它关了。

相关推荐
A懿轩A8 分钟前
C/C++ 数据结构与算法【数组】 数组详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·数组
古希腊掌管学习的神9 分钟前
[搜广推]王树森推荐系统——矩阵补充&最近邻查找
python·算法·机器学习·矩阵
云边有个稻草人13 分钟前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
半盏茶香13 分钟前
在21世纪的我用C语言探寻世界本质 ——编译和链接(编译环境和运行环境)
c语言·开发语言·c++·算法
忘梓.1 小时前
解锁动态规划的奥秘:从零到精通的创新思维解析(3)
算法·动态规划
tinker在coding3 小时前
Coding Caprice - Linked-List 1
算法·leetcode
XH华8 小时前
初识C语言之二维数组(下)
c语言·算法
南宫生8 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
不想当程序猿_8 小时前
【蓝桥杯每日一题】求和——前缀和
算法·前缀和·蓝桥杯
落魄君子8 小时前
GA-BP分类-遗传算法(Genetic Algorithm)和反向传播算法(Backpropagation)
算法·分类·数据挖掘