lucifer

大家好,我是 lucifer,众所周知,我是一个小前端 (不是) 。其实,我是 lucifer 的 1379 号迷妹观察员,我是一粒纳米前端。(不要回答,不要回答,不要回答!!!)

这是第一次投稿,所以可以废话几句,说一下我为什么做题和写题解。刚开始做算法题的时候,只是纯粹觉得好玩,所以不仅没有刷题计划,写题解也只是随便记下几笔,几个月后自己也看不懂的那种。一次偶然机会发现了 lucifer 的明星题解仓库,是找到了 onepiece 的感觉。受他的启发,我也开始写些尽量能让人看懂的题解,虽然还赶不上 lucifer,但跟自己比总算是有了些进步。

身为迷妹观察员,lucifer 的 91 天学算法当然是不能错过的活动,现在活动的第二期正在 🔥 热进行中,有兴趣的同学了解一下呀。言归正传,跟着 91 课程我不再是漫无目的,而是计划清晰,按照课程安排的专题来做题,这样不仅更有利于了解某一类题涉及的相关知识,还能熟悉这类题的套路,再次遇见相似题型也能更快有思路。

废话就这么多,以下是正文部分。等等,还有最后一句,上面的”不要回答”是个三体梗,不知道有没有人 GET 到我。

今天给大家带来一道力扣简单题,官方题解只给出了一种最优解。本文比较贪心,打算带大家用四种姿势来解决这道题。

参加了 lucifer 的 91 天学算法活动,不知不觉中已经一月有余。从盲目地做到有目的、有套路地去做。

在 lucifer 的 91 课程中,从基础到进阶到专题,在这个月中,经历了基础篇的洗礼,不管在做题思路,还是做题速度都有了很大的提升,这个课程,没什么好说的,点赞点赞再点赞。也意识到学习好数据结构有多重要,不仅是思维方式的改变,还是在工程上的应用。

对一个问题使用画图、举例、分解这 3 种方法将其化繁为简,形成清晰思路再动手写代码,一张好的图能够更好地帮助去理解一个算法。因此本次分享如何使用画图同时结合经典的题目的方法去阐述数据结构。

西法喊你参加模拟面试~

  |  

很多粉丝向西法我反应:做了很多题。看到新的题目还是不会, 看了题解之后又觉得自己会,但是自己写又写不出来。

这个现象实际上很常见, 破局的最有效方法就是多做题。 是真正地做出来,而不是看了会了,要自己从零 coding。

我之前讲过对于新手的建议是按 tag 刷, 对于老手或者马上要面试的我建议随机刷。 今天我在补充一句,那就是不管大家用哪种方式刷,建议大家都通过模拟面试或者竞赛的形式刷。 时间条件允许的可以参加周赛,不允许的则可以模拟面试。

由于 lucifer 我是一个小前端, 最近也在准备写一个《前端如何搞定算法面试》的专栏,因此最近没少看各大公司的面试题。都说字节跳动算法题比较难,我就先拿 ta 下手,做了几套 。这次我们就拿一套 2018 年的前端校招(第四批)来看下字节的算法笔试题的难度几何。地址:https://www.nowcoder.com/test/8536639/summary

实际上,这套字节的前端岗位笔试题和后端以及算法岗位的笔试题也只有一道题目(红包的设计题被换成了另外一个设计题)不一样而已,因此也不需要担心你不是前端,题目类型和难度和你的岗位不匹配。

由于 lucifer 我是一个小前端, 最近也在准备写一个《前端如何搞定算法面试》的专栏,因此最近没少看各大公司的面试题。都说字节跳动算法题比较难,我就先拿 ta 下手,做了几套 。这次我们就拿一套 字节跳动2017秋招编程题汇总来看下字节的算法笔试题的难度几何。地址:https://www.nowcoder.com/test/6035789/summary

​ 去年的一年时间,我在群里每天都会出题给大家做。但是就在 2020-03 开始,力扣也开展了每日一题活动。我突然觉得这个每日一题的必要性变得小了很多,并且逐渐减少了出题频率。但是我还是不愿意放弃大家一起集中进行交流学习的机会。于是我打算新开辟一个专题,这个专题一方面要和力扣官方的每日一题重合度低,另一方面要让大家有参与的热情。

于是【异议!】系列应运而生。它是个什么东西呢?我相信大家一定在平时刷算法的过程中,一定遇到过“这解法怎么想到的?”,“这解法不对吧?”的情况,并且可悲的是没有人能够回答你。来这里,「力扣加加」 来回答你。我们会对大家提出的问题进行筛选,将有意义的问题开放出来给大家讨论和学习。

本次给大家带来的/是【异议!】系列「第二弹」。

本文是我的 91 算法第一期的部分讲义内容。 91 算法第一期已经接近尾声,二期的具体时间关注我的公众号即可,一旦开放,会第一时间在公众号《力扣加加》通知大家。

动态规划可以理解为是查表的递归(记忆化)。那么什么是递归?什么是查表(记忆化)?

记得我初中的时候,学校发的一个小册子的名字就是母题啥的。

大概意思是市面上的题(尤其是中考题)都是这些母题生的,都是它们的儿子。

熟悉我的朋友应该知道,我有一个风格:”喜欢用通俗易懂的语言以及图片,还原解题过程“。包括我是如何抽象的,如何与其他题目建立联系的等。比如:

如果把这个思考过程称之为自顶向下的话,那么实际上能写出来取决于你:

  • 是否有良好的抽象能力
  • 是否有足够的基础知识
  • 是否能与学过的基础知识建立联系

如果反着呢? 我先把所有抽象之后的纯粹的东西掌握,也就是母题。那么遇到新的题,我就往上套呗?这就是我在《LeetCode 题解仓库》中所说的只有熟练掌握基础的数据结构与算法,才能对复杂问题迎刃有余。 这种思路就是自底向上。(有点像动态规划?) 市面上的题那么多,但是题目类型就是那几种。甚至出题人出题的时候都是根据以前的题目变个条件,变个说法从而搞出一个“新”的题。

这个专题的目标就是从反的方向来,我们先学习和记忆底层的被抽象过的经典的题目。遇到新的题目,就往这些母题上套即可。

那让我们来自底向上看下第一期的这八道母题吧~



博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Material X 作为主题 , 总访问量为 次 。
载入天数...载入时分秒...