大家好,我是Johngo!
周末的时候,为了响应上周群里粉丝们的建议,想了想刷题的路线以及时间安排,再有就是一些细节问题。
重点来了?哪个群呢?那就是:“LeetCode刷题群”!!
刷题的必要性
在互联网工业界,算法题对于每一个程序员是必须必须要鼓励做的一件事情,算法题不仅可以提高编程思维能力,而且在项目的代码优化能够起到至关重要的作用。这就是为什么一些全球性的大厂都热衷于算法题的考究,基础能力、基本能力、必备能力...
所以,我觉得作为一名程序员,无关面试,都应该在日常工作学习中不间断的刷题,作为一种习惯,以提高编程能力以及逻辑思维能力。可以让大脑在工作中始终可以保持一种代码思维。
【工作了的人面临的窘境:打开LeetCode就会被认为是在为面试做准备?...】
算法题!重要!重要!重要的 3 点:
代码边界:刷题过程中,有非常大的概率是要合理设计边界值
数据结构思维:基础的数据结构是构造上层建筑的基础,很好的基础设计是后续的举一反三设计基础
其他编程概念:递归、遍历、动态规划、回溯等等都是解决日常问题的关键思考方式
以上3点,不得不说在逻辑思维的训练和日常项目开发,是能够起到很重要的作用!
故、因此、所以...
无论是学生的你!
还是即将毕业的你!
又或者是工作了的你!
再或者就是想刷题!
群里的各路大佬都来等着你的挑战!
进群上线挑战吧!
二
刷题的路线
趁着周末,大概的整理了一下刷题的路线以及一些建议,今天发出来供大家参考以及看看大家怎么说(大家有建议,一定思考、讨论、采纳!)。(这个图稍微有点长,下面等我娓娓道来,不过我估计这张提会更大更详细,不断会完善...,希望有机会可以作为大家的一份手头资料)解释几点:第一、空结点代表了后续安排一起刷LeetCode题目,几天后即将安排;第二、橙(成)色,是每段时间后的案例复盘,尽可能总结出一些特定专题的通用框架或者是技巧。另外,针对一些题目,可以有一套尽可能短的言语来描述解题思路,可以在一段时候后的回顾变得很快,因为难免会忘记;第三、额,,,你看不懂的部分仅仅是因为这个是 version1.0.0。所以,还请敬请期待,期待值不会为 NULL 哦(一定不会)
正式的娓娓道来........整理了基本的路线,基于两点考虑(刷题思维逻辑、高频使用顺序)第一点,刷题的思维逻辑由难到易、由整体到局部。最简单以及最常用的一个模块,毫无疑问会是「树」为什么?一般「树」类型的题目不会太难,但是它有一个很重要的思维定式:递归。递归很重要吗?很重要!在一些题目中,运用递归很快可以将题目解决。而且递归思想相较于其他的编程思想有着举足轻重的作用。所以会想着把「树」放在第一个被刷的专题。举例比如:树的遍历中使用递归思想的话,无疑又是最简单的一种类型,相比非递归的遍历方式,代码的整洁性和可读性是非诚高的。尤其是后续遍历,大家可以比较看下。「树」的后面放着是「动态规划」专题,就是因为在动态规划方面也会涉及到递归的思想,动态规划题目中运用递归由于会产生重叠子问题,所以会进一步处理。第二点,日常开发以及面试高频使用顺序(经大神已确认)调研不少的资料,发现动态规划、字符串、数组队列、BFS/DFS、树,有着比较高的频率出现尤其是最近组里有面试的小伙伴,貌似已经经过了5个左右大厂的面试,被问的点基本集中在了 动态规划、字符串、BFS/DFS、树等,这是最重要的几个点。然后在我跟其他的几个同事确认后,他们也会认为这些是最重要的。一方面是面试常考,为什么常考?就是因为在开发过程中会常常使用,这几方面能够锻炼有利于项目中最重要的代码设计思维
三
刷题的方式
顺序:以上图中的顺序时间安排:每周一指定10个题目(可以根据自身情况适当调整),自由进行练习,工作日大家在群里积极发言交流。一周尽可能全部完成,并且可以对该部分题目进行整理和归纳。复盘:每两周进行一次复盘总结,可以将自己总结归纳发到群里,群里进行总结交流复盘内容可言简意赅,也可万字描述!期待!!以上就是今天的全部内容啦!祝大家玩的开心!学而知不足,思而得远虑,行而能致远。我们下期见!