一文讲清楚算法刷题-计算机专业新生必看

哈喽,大家好,我是Sunny,你也可以叫我萨宁,一个热爱分享编程知识的程序员。我的昵称是Sunny不要停,寓意是美好的晴朗日子不要停下来,希望大家都能每天开开心心的。我的频道主要分享编程知识,生活,大学计算机学科学习,考研经验。目前已经上岸某211计算机专业,有大学学习,考研相关的问题,欢迎关注我,同名公众号[Sunny不要停]可以找到我的wx。

算法刷题,顾名思义就是利用一些方法解决问题,这种问题与高中遇到的数学问题,物理问题类似,不同的是需要计算机的辅助。

所以我们暂且不必畏惧它,它只是数学问题的plus版。在真正去做一件事之前,我们先了解一下它到底有什么用。

算法刷题的妙用

刷题最重要的作用是可以提升人的思维能力,尤其是利用计算机解决问题的思维能力。有了这种思维能力,无论是对项目开发,还是人工智能的理解都会上一个层次。通过计算机解决问题还可以获得成就感,就好像在高中时,你能做出别人做不出的题,那种感觉相信大家有体会。

思维能力也好,成就感也好,这都是比较虚的,那么回归到功利的角度,对于计算机的学生而言,刷题仍然必不可少。

我们以终为始,谈谈我的看法。

首先是就业

计算机的就业大部分是去私企(国企情况不太一样,关于计算机就业方向我们单开一期聊一聊),做的工作不外乎开发岗和算法岗。

这些工作在面试时都需要手撕算法题,一般每次技术面试都会随机抽两道算法题,你需要在面试官面前解题。能否解决算法题很大程度上会影响最终面试的结果,所以从私企就业角度来讲刷题是不可或缺的。

接着是比赛

刷题可以参加很多的比赛,每周在各大平台会有各种周赛,月赛,如果在部分平台的比赛拿到较好的名次,可以直通大厂面试。

其次是各种主办单位办的比赛,例如最有含金量,难度也是最大ACM/ICPC 区域赛、总决赛以及CCPC ,但是这些比赛想拿到铜牌及以上难度非常大,需要付出超越常人的努力 。此外还有PTA的天梯赛,蓝桥杯大赛软件组,RAICOM机器人大赛的编程赛道,CCF-CSP认证等等。

2015年 ACM-ICPC 北京区域赛现场


2021年ACM-ICPC世界总决赛排行榜


蓝桥杯大赛

在这些比赛中拿到比较好的奖项,对于找工作有很大的帮助,其中ACM系列的比赛拿到铜牌及以上的奖项,在很多大厂(BAT等等)可以免机试。

还有就是可以加综测分,帮助评奖评优。考研复试时有这些奖项可能会得到更高的分数。

此外在这些比赛中拿到奖项,学校大概率会发奖金,几百几千不等,我见过一个专门打比赛拿奖金的同学,四年累计拿到20万美元 。。。

最后是升学

从升学的角度来看,每年考研或者保研,在复试阶段一般都有机试,这个机试就是在规定时间内做几道算法题;有些学校没有机试,但也会以笔试的形式出几道算法题,让同学手写。

我是如何学习算法的?

这里的计算机是一个泛指,说的是计算机大类的学生,包括计算机科学与技术、软件工程、网络安全、大数据科学等等。

所以不难发现,算法刷题似乎成为计算机学生的标配,这也解释了为什么在很多大学ACM集训选拔那么火爆,计算机越好的大学越是如此。

如何开始对很多同学来说是个大问题,选择的方法不对很容易频繁跌跟头,四处碰壁,以至于最后放弃刷题。

我大一刚入学时,在某个晚自习打开刷题网站,选择第一题就开始做,看了半个小时一点思路也没有,然后放弃这道题,做第二道题,结果又是一点思路不会...这个晚上给我做自闭了。后来我才知道我一上来做的就是算法中非常难的专题动态规划。。。

好在在同专业好友的帮助下,我才逐渐重拾信心,摸索出了一条学习算法的道路。

  1. 学习一门/两门编程语言

    C语言和C++,这两门语言其实非常相似,C++是C语言的扩展版。我是先学C++,再学C语言。

    你可以思考一下,为什么我先学C++。

    我想的是既然C++是C语言的扩展版,那么C++会把原来复杂的操作简化,因为技术的进步一般都会使原来复杂的操作更加方便,那么C++的学习成本一定是更低的。

    学到什么程度呢?

    原则是只学重要的,不要追求一下子学完所有的,很多编程语言的课程动辄几百集,这会很劝退。我一直认为学习是个反复的过程,学完会忘是很正常的事,多用才不会忘。

    对于C++和C语言都只需要学完基础语法即可,C++的类及之后的内容刚开始可以不学。学习的时候可以对比对比编程语言之间的异同,你会发现编程语言直接都是相似的,当你学会一门,再学其他的会很快。

    在哪学?

    大多数的大学计算机老师上课都是念PPT,所以主动学习很重要,学会上哔哩哔哩大学[手动滑稽]。

    给大家推荐几个口碑还不错的课程吧。当然如果你觉得看书比看视频更容易学,相关的书籍也非常多,可以在搜索引擎上找找。

    C++:https://www.bilibili.com/video/BV1et411b73Z 前98集

    C语言:https://www.bilibili.com/video/BV17s411N78s

  2. 数据结构是算法的基石

    这部分理论性更加重一些,我入门看的是王道的数据结构,这部分除了外部排序,其他的都需要好好理解一下,这对之后的算法学习很重要。

  3. 开始学习算法&刷题

    学习算法有很多途径,如果你参加了学校了ACM集训,那么可能会有学长的讲的课程,此外各大平台(例如力扣,牛客,洛谷)都有自己的算法学习课程。

    我学的时候用的是Acwing 算法基础课,这个课程算是我的算法启蒙课,但是不得不说其实学习的难度还是很大的。学这个课程不能操之过急,因为大多数算法我们都没接触过,所以一定要一个专题一个专题啃下来,每一节课所讲的知识点,都要自己再去找相关的习题巩固。

    很有可能还是觉得抽象,这时候我会利用好搜索引擎找找有没有讲的比较好的、帮助理解的博客。

    哪里可以寻找到练习题?

    有非常多的OJ(Online Judge)提供广泛的习题以及在线测评。

    在给出这些OJ的地址前,我需要提醒一下,不要一味追求数量,用好两到三个即可。

    部分OJ:

    关于这些OJ的区别,如果大家想知道,我可以再出一期专门讲讲。

  4. 多参加比赛

    多参加比赛,以赛促练,这是一种很好的提升办法。

    我曾经想着要把全部的知识学完再参加比赛,但这种想法是不合适的,等我全学完,黄花菜都凉了。在比赛中可以发现自己的不足,激励自己提高。

    每周或者每个月在各个平台上都有免费举办的比赛。

    比较出名的有:

    • leetcode周赛/双周赛
    • 牛客周赛/月赛/挑战赛
    • Codeforces比赛(不定期,几天有一场)
    • AtCoder比赛
    • Acwing周赛

    此外还有就是上面我提到的蓝桥杯,天梯赛等等......

最后,行胜于言。算法学习光看不练永远学不会,多学多练,勤能补拙,沉下心来去学习,在路上你就已经超越很多很多人了......

最后的最后把我很喜欢的一句名言送给大家,与君共勉:种一棵树最好的时间是十年前,其次是现在。

相关推荐
黑龙江亿林等保几秒前
深入探索哈尔滨二级等保下的负载均衡SLB及其核心算法
运维·算法·负载均衡
lucy153027510793 分钟前
【青牛科技】GC5931:工业风扇驱动芯片的卓越替代者
人工智能·科技·单片机·嵌入式硬件·算法·机器学习
杜杜的man19 分钟前
【go从零单排】迭代器(Iterators)
开发语言·算法·golang
小沈熬夜秃头中୧⍤⃝36 分钟前
【贪心算法】No.1---贪心算法(1)
算法·贪心算法
木向1 小时前
leetcode92:反转链表||
数据结构·c++·算法·leetcode·链表
阿阿越1 小时前
算法每日练 -- 双指针篇(持续更新中)
数据结构·c++·算法
skaiuijing1 小时前
Sparrow系列拓展篇:对调度层进行抽象并引入IPC机制信号量
c语言·算法·操作系统·调度算法·操作系统内核
Star Patrick2 小时前
算法训练(leetcode)二刷第十九天 | *39. 组合总和、*40. 组合总和 II、*131. 分割回文串
python·算法·leetcode
武子康3 小时前
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
大数据·人工智能·python·深度学习·算法·机器学习·数据挖掘
pianmian18 小时前
python数据结构基础(7)
数据结构·算法