当前位置: 首页 > news >正文

学弟学妹少走弯路,超完整算法刷题路线出炉

大家好,我是帅地。

本篇文章主要讲解下面三个事:

1、自己学习算法的一些经历

2、大家学习算法存在的一些普遍问题

3、给大家规划的算法刷题路线

一、算法学习往事

记得当初学了 C 语言就开始刷题了,刷题倒不是面试,而是为了通过转专业考试,因为我大一第一学期读的是非计算机专业,了解到转专业需要做 一些简单的算法题,那会我就给同学借了学校的 OJ 账号,开启了一波刷题之路。

到了第二学期转专业考试,也是轻松通过的考试,因为对我来说,那些试题太简单啦。

到了大一第二学期之后,我就慢慢开始学习数据结构了,在 OJ 上也没怎么刷题了,因为比较简单的题都被我刷了,剩下的都是一些比较难的题,有些刷不动,就没刷。

那会刷的题都比较考察思维,没有涉及诸如回溯啊,动态规划啊这些算法思想,不过那会是刷的真爽,因为每次通过一道题就可以升一个等级,刷了比较难的题直接涨 三个等级(当然具体我也忘了,只是记得是这样)。

不过我很庆幸那会的刷题,虽然没有学到各种牛逼的算法思想,但是刷了一两百道题之后,我觉得我的编码能力确实有 不少的题型,比如很多时候,我能够把自己的想法转化成具体的代码,而这种能力,我觉得是非常重要的。

后面学习数据结构的时候,有不少题数据结构,我了解了思路之后,自己就能够试着去写代码了,即使存在不少 bug。

大概第二学期花了两个月学完了《数据结构与算法分析:C语言描述版》这本书之后,根据自己各方面都有了挺大的提升,然后学校也有开设算法选修课,通过选修课也接触了诸如 枚举啊,贪心啊,动态规划,回溯之类的算法思想,不过那会是真的不知道老师在讲什么,特别是动态规划,一上来就是 0-1背包问题,反正我是听的 一脸懵逼。

之后自己就去买了好些书,比如《挑战程序设计大赛》,《编程之美》,还有ACM算法竞赛啥的,反正忘了,总的来说就是,书看的比较多。因为那会不像现在,网上攻略一大堆,网课也一大堆,当然,那会也没有诸如校招等相关信息。

但是我觉得也挺好的,至少学的很爽,也没想着是要笔试,面试啥的,学的比较纯粹,然后也有去一些诸如 杭电OJ 的平台刷了一些题,leetcode 倒是刷的不多,leetcode 是后面校招求职才知道的。

总的来说就是,大一和大二第一学期,在算法上还是花了不少时间,也学的很快乐,但是要说刷题的数量,其实不多,我感觉可能就是三四百道吧,但是我觉得对于 leetcode 上的题,很多题还是可以做出来,包括后面大厂面试,基本都能做出来,笔试的话,有点难,但是也做的还行吧。

总的来说就是,我觉得先打基础非常重要,之后再去学习一些算法思想,之后再刷题巩固。

二、大家学习算法存在的一些普遍问题

刚才我大致说了我算法学习的一个大致路线,相对来说我踩坑是比较多的,比如我是踩了坑之后,再去学习对应的算法思想,而且前期刷了很多基础题,编码能力也还不错。

但是现在的很多人,我觉得编码能力好差啊,比如有些人说已经刷了 300 多道 leetcode 的题了,我以为挺厉害了,但是我让他做题,发现好菜啊,就是不够灵活 + 无法把自己的想法用代码表达出来,而且寻找 bug 的能力也比较差。

而且很多人也是按照 leetcode 的顺序刷题,如果是非初学者,我觉得按照顺序也是没问题的,但是 leetcode 顺序的话,难度分布还是不科学的,如果你硬着头皮去刷,肯定被劝退,比如第十题就是正则表达式

当然,也有很多人直接跟着攻略学习一些算法思想,然后刷题,这样也不是不行,但是如果是初学者,比如学习了一门语言,并且也没做过什么练习题,那么其实编码能力很差的,即使学懂了算法思想,但还是会无法自己独立写出代码,原因就是基础太差,我觉得可以先做一做基础题,再去学这些算法思想,再去刷题吧。

三、给大家规划的算法刷题路线

然后也有很多人问是按照 leetcode 顺序刷题还是分类刷题,其实刷题没有严格顺序,专题刷或者顺序刷都可以,但是这对于初学者来说,容易遇到很难的题,进而被劝退,所以我也给大家规划了一个刷题顺序,如果你没有明确的目标,你可以按照我这个顺序来刷题,本刷题顺序只是基于我个人的刷题理解,挑选了差不多 200 道题,并且会按照循环渐进且相对系统的方式给出题目,反正按照这个顺序刷,以后应付算法面试或者打蓝桥杯这些都是问题不大。

大致目录

image-20230210133458174

当然,这个刷题路线是免费的,大家如果没有明确路线的,可以跟着刷,题量 也是挺多的了,跟着刷完,面试和蓝桥杯这些,应该问题不大。

算法刷题路线地址入口:https://www.playoffer.cn/1216.html

大家加油!

http://www.lryc.cn/news/1471.html

相关文章:

  • Windows截取gif动态图的软件 ScreenToGif 的安装、使用教程
  • C++程序设计——多态:虚函数、抽象类、虚函数表
  • OpenMMLab AI实战营 第6课 语义分割与MMSegmentation
  • 产业互联网是对互联网的衍生和进化,也是一次重塑和再造
  • Shell脚本之——Hadoop3单机版安装
  • 代码随想录NO39 |0-1背包问题理论基础 416.分割等和子集
  • FITC-PEG-FA,荧光素-聚乙二醇-叶酸,FA-PEG-FITC,实验室科研试剂,提供质量检测
  • 简洁易懂:源码+实战讲解Redisson并发锁及看门狗自动续期
  • TCP 三次握手和四次挥手
  • JavaWeb复习
  • P14 PyTorch AutoGrad
  • 前端报表如何实现无预览打印解决方案或静默打印
  • Operating System Course 2 - My OS
  • 离散数学 课时一 命题逻辑的基本概念
  • Word文档带有权限密码怎么办?
  • C++多态
  • 访问学者如何申请美国J1签证?
  • 使用gitlab ci/cd来发布一个.net 项目
  • 笔试题-2023-蔚来-数字芯片设计【纯净题目版】
  • ThreadLocal 详解
  • 【Java 面试合集】重写以及重载有什么区别能简单说说嘛
  • 到底什么是股票委托接口?
  • Linux驱动:VPU
  • 简介Servlet
  • Learning C++ No.7
  • 【MyBatis】第八篇:一级,二级缓存
  • 【大唐杯备考】——5G基站开通与调测(学习笔记)
  • redhat7 忘记root密码,重置办法
  • QML- 对象属性
  • 将.js文件转成vue标签结构的样式