戊子仲秋
Golang后端
·2024-04-29
#学习# #阅读# #闲聊# 备战暑期实习 Day304 1. 随便聊聊时间~ 今天刚好是蓝桥杯出成绩,就借此机会聊聊蓝桥杯吧。 <报喜> 这次蓝桥杯,我们宿舍全宿舍报名,全宿舍拿奖,用我的话来说就是,做完学校的 OJ,评价是蓝桥杯的题目没有我们期末考试的题目难 抽烟哥、我、算法哥、三个人是省一,他俩省一不意外,实力本该如此,我能拿省一运气成分占了很大的比重,考研哥省三,考研哥的实力跟我差不多,我原本也是预期这次省三的,不过运气救了我一命 <如何学算法> 省赛成绩出了之后,很多因为某些原因加了我微信的人跑来问我怎么学算法,虽然可能会误伤到一些人,但我敢说,大部分,至少来说,我遇到的所有跑来直接问一句算法怎么学的人,在我传授完我的经验之后,都没有开始,或者是刚开始就结束的 举个例子,一般来说,以现在互联网的发展程度,在 B 站上到处都是算法该怎么学的视频,无数高手传授经验,但凡去了解一下的,都应该知道有 LeetCode 这个平台,但凡开始刷算法,无论是看题解、看评论,接触到算法相关的社区 像代码随想录、ACwing 这些著名的算法学习社区不可能不清楚,以我自己为例,刚来力扣的时候,我就是那个力扣第一题,两数之和都做不出来的人,不只是题目做不出来,力扣的输入输出是啥样的都看不懂 在刷了一阵子题目之后,进入了算法这个圈子,肯定会有人提到什么代码随想录,百度一搜就知道是什么意思了,也肯定会有人提到什么 y 总,你可以直接问 y 总是谁,但我建议还是直接百度,一百度就认识 ACwing 了 其实说这么多,我最想说的是,如果一个人真的想刷算法,他应该已经开始了,而不是找一个“陌生人”至少我根本不认识他们,问我算法怎么学,问这种几乎没有任何指向性的问题,更何况因为根本不认识,我对他的基础完全不了解,自然也没法给出什么建设性的意见 ---吐槽结束--- 每次我发编程相关的朋友圈,发算法相关的就有人问算法怎么学,发项目相关的就问项目怎么做,也许我该清理一下陌生人好友了,之前在 CSDN 以及其他编程的社区认识太多鱼龙混杂的人了 ---回到正题--- 我在刚开始学编程的时候,有过一个疑问,数学不好能不能学编程?换到我身上就是,文科生能不能学编程?再往小里说就是:数学不好,高中从来没及过格,文科生,能不能学算法?我曾经一直有这个疑问 但我从来没有问出来,因为这是一个跟上面我说的:“怎么学算法?”这类的无脑问题,因为无论问题的答案是什么,你都要学算法,因为面试要考。 想要解答疑惑,最好的办法就是马上去做,去尝试,实践是检验真理的唯一标准。事实证明,大部分算法题只需要初中数学就能做,跳过数论题目,算法就是一个需要 99% 汗水来练习的东西(天赋好的自然事半功倍,天赋不好就多练,没有捷径) 这也是其中一个我没法回答如何学习算法这个问题的原因,我自己算法都没学明白,不说别的,入门算法,动态规划的背包问题,至今为止我都没学会,动态规划依旧一窍不通,很多专题搞不明白,身上有的只是大量刷题积累的做题经验,仅此而已 <关于刷题> 我对自己的算法能力有比较清晰的认知,这次蓝桥杯省一就是我的极限了,国赛大概率就是陪跑一下,所以才选在今天分享一下我的刷题经验和看法,如果等国赛结束再分享,到时候周围都是国奖大佬,就没有我说话的地方了 每个人都有自己的情况,找到适合自己的算法刷题方式是最重要的,我能做的,只有分享一下我刷过的题目,踩过的坑 因为只是一些不成体系的碎碎念,所以就直接放在闲聊里啦~ 1)初学 C语言,刷牛客的 C语言入门 100 题,对熟悉语法,入门代码题,提升自信心很有帮助,因为题目比较简单,基本都能做 2)C 练习 STL,打开力扣选择简单题,熟悉 vector、string、stack、queue、unordered_map 五个最常用(个人认为)的数据结构,基本上就用了,像 sort 这些估计用一次就会了,STL 库忘记了直接百度,慢慢的就烂熟于心了(当然,数据结构也要学,我永远忘不了第一次学数据结构,当时一脸懵逼的感觉) 今年打蓝桥杯,我已经不用 C 作为主语言超过半年了,每天都在用 Go 刷力扣,但是基本的 STL 用法已经深入骨髓了 3)前两个更多的是语言语法的学习,我的第一次算法之旅是从大一寒假结束开始的,我开始每天两题,刷剑指 Offer,历时一个月,经典永不过时,剑指 Offer 包含了大量算法,让我大开眼界 第一次蓝桥杯将近,我同时刷 LeetCode 每日一题和LeetCode hot 100,遇到了两个困难,1、题目太难,坚持不下来;2、大家都说竞赛刷力扣不如直接进火葬场(虽然说的确实没错就是了) 力扣刚开始刷很难受,因为没有输入输出,刷多了容易上瘾,因为没有输入输出 为了备战蓝桥杯,当时的我转变策略,转战 ACwing 洛谷,然后算法基础课第一个章节就听不懂,用一个字来形容我当时的感受就是:难,太难了,只能跑去洛谷刷入门题,然而洛谷的入门题也是重量级 在刷了 30 道洛谷之后就再也刷不动了,无尽的算法压倒,打完蓝桥杯之后摆烂了好一会儿,完全不想看到算法 4)第一次蓝桥杯结束后,我继续刷力扣 hot100,面试必刷150,以及牛客面试题,一直刷到转专业的考试,考试指定的语言是 Python,算法实力不取决于语言,速成 Python 语法后成功考过了 在这之后,我的力扣就停滞在了 300 多题 算法摆烂了一个暑假之后,我转了 Go 语言 5)大二上学期,开刷代码随想录,重走 ACwing(失败),基本走完了整个代码随想录,算法能力提升不大,但是巩固了 Go 语言的语法 然后开始用 go 坚持写力扣每日一题 一直到这个学期,我猛然发现,一年过去,我的算法能力似乎没有什么提升,坏消息是:几乎没有提升;好消息是:也没有落下,一点一滴在积累 在经历了长达一年的一锅乱炖,到处乱刷之后,基本的做题能力已经具备了,对使用的语言也足够熟悉了,是时候专题突破和训练的 我开始自己寻找题单,我找了很多地方,很多人分享的题单,各有优劣,最终我选择了灵神的题单,并开始了新一轮的刷题,在有基础的情况下进行针对性的训练,提升是非常快的,快到像打游戏那样让人上瘾,每做一道题你都能感觉自己在提升 这也是说前段时间我沉迷算法的原因(常看闲聊的观众应该知道,前段时间我沉迷算法的日子) 这次能拿省一,三个部分的原因 1、运气不错 2、每日一题日复一日的基类 3、这段时间专题训练提升的算法能力 6)总结(前面其实不那么重要(更多的是吐槽),总结是上述内容的精华) 如何学算法?以我个人的经验来说,主要分三个阶段(并不是只有三个阶段,只是我目前的实力只在第三阶段) 第一阶段:熟悉语言语法,首先需要熟悉一门语言,语言不限,刷简单题,语法题,俗话说的好:“磨刀不误砍柴工。” 第二阶段:总览数据结构与算法,在熟悉语言的基础下,学习基本的数据结构(程序员的必经之路,数据结构的学习),然后刷像剑指 Offer 这样的题单,总览常见算法,至少别人说一句这道题用二分,这道题用堆,这道题是搜索,可以不会做,但总不至于听完之后一头雾水,俗语有言:“没吃过猪肉,还没见过猪跑么。”这里就见见猪跑。 第三阶段:见到猪在跑了,知道这道题用二分做了,但你不会二分,问题不就简单了,不会二分那就去学二分,什么不会就去学什么,再简单不过的道理了,不会就去学,专题训练,逐个击破,我现在就处于这个阶段。古人言:“纸上得来终觉浅,绝知此事要躬行。”,有人问:学了一下子又忘了咋办?那就再学一遍,学两遍,学三遍五遍十遍,直到记住,没记住就是代码写的不够多。 我对算法的全部经验就在这三个阶段里面了,希望对大家有帮助,也算是给自己梳理了整个学习算法的历程,对未来的刷题计划也更清晰了 2. 美食分享时间~ 庆祝一下,今晚吃鸡(图一) 那今天的闲聊就到这里啦~ 谢谢你能看到这里呀~ 我们明天的晨起计划不见不散~~~ 【今日段子】 【“可以和我打一辈子算法竞赛吗?”】 【“一题一题,积累起来就是一辈子。”】 【节选自「还在GO!还在GO!」】 【——《戊子 · 逛今日的力扣评论区》】
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
下载 APP