学习算法首先要爱上刷题,「 英雄哥 」教你如何爱上「 刷题 」
Posted 英雄哪里出来
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习算法首先要爱上刷题,「 英雄哥 」教你如何爱上「 刷题 」相关的知识,希望对你有一定的参考价值。
文章目录
前言
你为什么要刷题!如果你只是因为想找到一份好的工作而来刷题,那我劝你放弃这个念头!因为,你坚持不了!任何带有功利性的行为,在没有得到应有的回报之前,都不能很好的坚持下来。刷题应该成为一种习惯,有了习惯就会有自驱力,养成习惯以后你就会爱上它,本文就来教你如何爱上刷题。
点击地址观看完整版
一、刷提前的准备
1、编程语言
首先是编程语言。推荐学习 C语言, 因为C语言陪我度过了我的青春,让我的青春不留遗憾!当然,我是认真的,原因就是情怀。有情怀,才能有动力继续做下去。每当敲出这个符号->
的时候,你是否有一丝悸动,这是C程序员的峥嵘岁月!
2、编程环境
其次是编程环境。可以直接用 LeetCode 官方提供的环境,这样就躲过了安装环境的复杂步骤。很多人可能是被环境的配置所劝退的,这就太可惜了。
所谓,工欲善其事,必先利其器,环境整好了,也就成功了一半!
如下图所示:
蓝色框 代表选择的语言;
红色框 代表编码框;
橙色框 代表测试用例框;
黄色框 代表本地调试按钮;
绿色框 代表提交按钮;
3、测试用例
第三点,就是一定要学会写测试用例。当你答案错误的时候,千万不要着急,也不要急着找大神来看代码为什么错了,很多人一旦错误就把代码贴到群里让大家一起看,这样只能把别人的能力不断变强,自己则会越来越弱。
根据题目的条件,造一些合适的数据,如果执行结果和官方的不一致,再去查代码错误的原因,就会更加有方向。
二、推荐的书
1、LeetCode零基础指南
我推荐一开始不要看书。对于程序员来说,实践才是最重要的,你在敲代码的时候一定是在电脑边,所以可以网上找一些算法资料会比看书更有用。比如下面这个专栏就是为力扣零基础的玩家量身订做的:
这个专栏主要讲解了一些 LeetCode 刷题时的一些难点和要点,主要分为以下几个章节,并且会持续补充一些有关于方法论的文章。文章有试读,可以简单先看一看试读文章。
2、算法导论
很多人问这本书,这本书太过深奥,初学者我不太推荐去看。
三、零基础如何刷LeetCode
1、水题
一开始千万不要急着学算法,就按照自己十几年的经验,找 100 道水题水一水,什么是水题,就是 通过的人多,并且 标签为简单 的题。这种题一定够水。类似问题一起刷,多练习,多思考,多总结,多复盘。马山就能凑够 100 道了。
2、多维思考
一个题水过了以后,千万不要骄傲,想想其它办法,用多种方法把它过掉它。锻炼你的多路思维。比如一个问题你可能是通过暴力枚举的方法过掉的,它的时间复杂度可能是 O ( n 2 ) O(n^2) O(n2),可以试着用 二分查找 转换成 O ( n l o g 2 n ) O(nlog_2n) O(nlog2n),或者用 双指针 或者 哈希表 转换成 O ( n ) O(n) O(n) 等等。
以上算法都可以在我的博客上找到:
3、举一反三
把一些看似不同的题整理在一起,并且用同一套代码来过掉它,这样以后遇到一个完全不同的题,你能够第一时间联想到之前做过的某道题,这就是 举一反三,触类旁通 的道理。
例如,很多题目都可以用 动态规划 来做:
4、参加九日集训
「 九日集训 」是博主推出的一个能够白嫖付费专栏「 LeetCode零基础指南 」的活动。通过 「 专栏中的联系方式 」 或者 「 本文末尾的联系方式 」 联系博主,进行报名即可参加。九日一个循环,第三期计划 「 2021.12.10 」 开启。
玩法很简单,每天会开启一篇试读文章,要求有三点:
1)阅读完文章后,课后习题 「 全部刷完 」(都能在文中找到解法,需要自己敲一遍代码);
2)写 「 学习报告 」 并发布社区 九日集训(每日打卡) 频道
3)在 「 打卡帖 」 提交 「 学习报告 」 链接;
完成以上三点后方可晋级到下一天,所有坚持到 9天 的同学,会成为 「 英雄算法联盟合伙人 」 群成员(目前已有将近 100 位成员),只限500个名额,优胜劣汰,和精英在一起,无论是沟通,学习,都能有更好的发展,你接触到的人脉也都是不一样的,等找工作的时候,我也会为大家打通 hr 和猎头,让你前程无忧~
详细规则参见:九日集训规则详解。
目前第一轮「 九日集训 」已经进行到第七天,即将开启第二轮。
四、如何学习算法
1、系统整理
如果已经刷满100道水题以后,建议系统的学一下算法,然后刷满对应的题数:
算法 | 题数 |
---|---|
零基础算法 | 50题 |
数学题 | 10题 |
排序 | 100题 |
贪心 | 20题 |
位运算 | 40题 |
链表 | 100题 |
栈 | 20题 |
队列 | 20题 |
数组 / 线性枚举 | 50题 |
字符串 | 40题 |
前缀和 | 10题 |
双指针 | 20题 |
二分枚举 | 30题 |
离散化 | 10题 |
哈希表 | 20题 |
深度优先搜索 | 50题 |
二叉树 | 20题 |
二叉搜索树 | 20题 |
字典树 | 10题 |
广度优先搜索 | 50题 |
拓扑排序 | 10题 |
最短路 | 10题 |
最小生成树 | 5题 |
并查集 | 5题 |
堆 | 10题 |
树状数组 | 10题 |
线段树 | 20题 |
KMP | 10题 |
动态规划专题 | 100题 |
数据结构设计专题 | 30题 |
2、解题划级
这是我给 「 英雄算法联盟合伙人 」 指定的寒假训练计划,如果你有时间,有精力,有热血,想要可以的话,可以通过文末的名片联系到我。一起努力刷题!
五、如何总结
刷题为主,总结为辅,一句话题解,然后发解题报告作为记录。
阶段性,里程碑式的将学过的算法组织成自己的技能树将不会的算法也添加到自己的技能树中,找一块完整的时间,将技能树中没有学会的知识点学会,点亮技能树!
六、算法专栏推荐
专栏 | 定位 | 适宜人群 |
---|---|---|
「 光天化日学C语言 」 | 「 入门 」 | 没有任何语言基础 |
「 LeetCode零基础指南 」 | 「 初级 」 | 零基础快速上手力扣 |
「 C语言入门100例 」 | 「 中级 」 | 零基础持续C语言练习教程 |
「 算法零基础100讲 」 | 「 高级 」 | 零基础持续算法练习教程 |
「 画解数据结构 」 | 「 高级 」 | 「 推荐 」 数据结构动图教程 |
「 算法进阶50讲 」 | 「 资深 」 | 进阶持续算法练习教程 |
「 LeetCode算法题集汇总 」 | 「 资深 」 | 全面的力扣算法题练习集锦 |
「 夜深人静写算法 」 | 「 资级 」 | 竞赛高端算法集锦 |
七、配套赠送福利
语言入门:《光天化日学C语言》(示例代码)
语言训练:《C语言入门100例》试用版
数据结构:《画解数据结构》源码
算法入门:《算法入门》指引
算法进阶:《夜深人静写算法》算法模板
以上是关于学习算法首先要爱上刷题,「 英雄哥 」教你如何爱上「 刷题 」的主要内容,如果未能解决你的问题,请参考以下文章