想寻求一点初学算法的建议 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
Poluk
V2EX    程序员

想寻求一点初学算法的建议

  •  
  •   Poluk 2023 年 5 月 20 日 3832 次点击
    这是一个创建于 966 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚学完数据结构的基础,在 B 站听的王卓老师的课。

    打算学完算法就着手去刷题的,不过现在要开始进行算法的学习有点迷茫,这两天听的左程云体系班的课程,听完了几节自认为效果并不是很好...比如归并排序的代码讲完+两道例题还是不会手动去实现。

    V 友能给些学算法的思路和建议吗?或者推荐课程 /书籍也行,之前下载过《算法》第四版的红书,暂时还没看,听说对新手比较友好还是 Java 语言的。

    22 条回复    2023-05-22 16:02:12 +08:00
    Light3
        1
    Light3  
       2023 年 5 月 20 日
    直接上力扣刷就好了..
    看 10 遍不如 写一遍..
    Poluk
        2
    Poluk  
    OP
       2023 年 5 月 20 日
    @Light3 只会基本的数据结构...那些常见的算法还有动态规划,BFS,DFS,回溯,分治都不用特意学一下?直接上 LeetCode Hot100 题能 ok 吗?
    C47CH
        3
    C47CH  
       2023 年 5 月 20 日   1
    建议先看书。个人不喜欢没有准备的刷题。
    yongdongjino3
        4
    yongdongjino3  
       2023 年 5 月 20 日   2
    cs61a+cs61b 也可以先看看算法导论
    lostberryzz
        5
    lostberryzz  
       2023 年 5 月 20 日   1
    语言基础+大致的数据结构和算法的概念理解之后,按照这个刷就行 https://www.programmercarl.com/

    第一遍想不出来没关系,看题解理解之后自己写一遍,然后记点必要的笔记即可,之后再一轮轮的刷加强记忆。
    xywz
        6
    xywz  
       2023 年 5 月 20 日   1
    可以先跟着这个教程刷题https://labuladong.github.io/algo/ ,里面根据知识点分类,免费的看完就够了,后面就自己刷题。

    比较全的算法知识,需要有一点基础再看: https://oi-wiki.org/
    hello2090
        7
    hello2090  
       2023 年 5 月 20 日   1
    bfs dfs dp 看看算法导论就可以刷起来啦。其实算法导论这么长很多是在算复杂度,你知道 map 能 put/get 就能刷题了啦
    Doragd
        8
    Doragd  
       2023 年 5 月 21 日   1
    没搞懂为啥总有人在别人初学的时候就推荐算法导论,我推荐 https://programmercarl.com/ ,里面关于 dfs ,bfs 也有很好的讲解
    CLMan
        9
    CLMan  
       2023 年 5 月 21 日   1
    《算法导论》属于学院派大部头书,正规科班拿来做教材没啥问题,行业人员拿来做参考资料也没啥问题,拿来自学就是有问题,全是伪代码,而且根本读不完。

    《算法 4 》整体还行,但是缺点也很明显,个人感觉还是厚了点,而且缺失一些内容,比如动态规划。

    《数据结构与算法分析》研究生看的书籍,主要是讲分析算法复杂度的,不适合拿来自学。

    其它算法书也读过,没列出来,就我读过的几本算法书籍来说,没有一本是适合自学的完美书籍,但硬要推荐一本的话,《算法 4 》应该还算勉强。

    软件开发工程师级别(本科级别)的需要掌握的:

    - 算法常识:复杂度相关概念,基本算法:排序、优先级、查找,基本数据结构:数组、队列、堆、树、图,等等
    - 实际编码能力,刷题

    算法常识就是看书或者看视频或者上课,选你最容易接受的,搭建一个基本的知识框架,不要钻牛角尖。

    有了知识框架就开始刷题,再根据刷题去巩固、完善你的知识框架。
    apake
        10
    apake  
       2023 年 5 月 22 日 via Android
    初学编程,建议从函数式入手, 提高抽象思维能力后学算法会更轻松一点。 cs61a + sicp +sicp-python 版本
    huajieyu
        11
    huajieyu  
       2023 年 5 月 22 日   1
    正在 acwing 上学习算法,刷完了语法基础课,正在刷算法基础课,感觉学习效果还不错。
    Poluk
        12
    Poluk  
    OP
       2023 年 5 月 22 日
    @CLMan 非常感谢!《算法导论》确实很厚,里面有很多数学证明,而且自己去看也确实不知道哪里不用看之类的。

    前面有人推荐的代码随想录这个网站也蛮好的...最近在看他,发现他的分类也挺清晰的,里面每个知识点基本都有对照的讲解。
    Poluk
        13
    Poluk  
    OP
       2023 年 5 月 22 日
    @apake 谢谢老哥,我目前大二,而且也是专科。其实 Java 基础语法(除线程并发之类的)已经学完一年多了,现在的情况就是着手学着基础,同时也学做 Spring Boot 相关项目。

    CS61A ,SICP 确实好,但目前来说可能时间有点紧迫,如果我大一的视野能照到这样的课程就好了,大一基本都在学流行的赚钱的技术了。(哭)
    smallWang
        14
    smallWang  
       2023 年 5 月 22 日
    @Poluk #13 建议趁早换掉 java 带专 java 在杭州 没人要,除非你 acm 牛逼,icpc 有奖之类的。目前看来带专人也只有 acm 、icpc 有出路了 诶 难崩 建议专升本。
    smallWang
        15
    smallWang  
       2023 年 5 月 22 日

    他 acm 专科打了三年 本科两年 金牌银牌 都有
    java 在杭州太卷了
    建议趁开始早点转 我当初也是带专 java
    Poluk
        16
    Poluk  
    OP
       2023 年 5 月 22 日
    @smallWang #14 目前在南京上学,其实想在年轻的时候想看看杭州的机会,专升本肯定是一定要升的。只不过不想把升本的备考时间线拉太久这样会很累,而且我也不想暂时因为备考升本放弃技术的学习。

    我确实也时常会有焦虑...但是也没办法,考虑太多只会更焦躁,倒不如趁着现在还有时间和有兴趣驱动静下心来多学点技术,而且我也有努力学再多的技术也不一定有工作的心理准备(包括升本之后去找工作的情况)。

    ICPC 可能暂时没办法去搞了...也许升本之后可能有点机会?其实 ICPC 拿牌子的人找工作也只是相对好找一些而已,个人努力在这种大环境下显得微不足道,这也是没办法的事,我觉得普通人的出路其实相对来说真的很少很少。

    Java 岗位多也卷,但是转其他的话也就只剩目前呈上升趋势的 Go ,但是相对 Java 来说 Go 语言岗位更少吧?
    smallWang
        17
    smallWang  
       2023 年 5 月 22 日
    @Poluk 南京不清楚 杭州 java 烂大街,你已经有职业规划的意识了,建议看看你想发展的城市 上 boss 瞅瞅,看看普遍的需求。
    1. 焦虑是一直有的 我天天都焦虑呢,然后开摆,适当的焦虑是动力 过渡焦虑就要摆烂了。控制好自己的情绪
    2. 算法怎么说呢,不用学的很深,你是必不可能卷到大厂里面去的,小厂天天写 curd 要个屁的算法,懂基本的就 ok ,因为应届生面试没有工作经验只能叭叭算法了。不用太精通,不过打打 acm 是好的,坏处是基本上时间都要投入在算法上了,后面图论啊、深搜剪枝啊、头疼死,学会了之后毕业出来 crud 你怎么想? icpc 没必要 除非你真的很牛逼,要震这么牛逼也不可能是带专人了。
    3. 专升本一年能搞定,你就好好搞。
    4. go 不太清楚 问问其他老哥或者看 boss 。
    5. 职业规划慢慢来 不用很急,多看 boss ,多看看市场需要,不是看你会什么 而是看别人要什么,规划好了之后再去针对性的学习,比如要做后端,要了解 tcp 、http 的知识,java 后端和 go 后端大差不差,基本都是 mvc 之类的,这个看你自己选择了,我是后端,别的方向的我也不懂,问问其他大佬
    6. 我觉得对于一个程序员、大学生来说,最重要的还是他的学习能力,可以在一定时间内上手一样东西、技术、算法 这个很重要,毕竟计算机的东西都是相同的,所以你不单单的是学 java 这门语言,而是这门语言背后的编程思维、面对对象、抽象思维等。
    7. 不仅仅是数据结构 作为开发你还需要掌握 sql 、linux 基础。
    Poluk
        18
    Poluk  
    OP
       2023 年 5 月 22 日
    @smallWang #17 其实我个人的期待并不想做一个简单的 CRUD 工程师哈哈哈哈,也许有点期望过高。不过这只是最终理想罢了。

    像计算机基础我计算机网络已经学两遍了...Linux 基本的命令也会(后续打算重新学一遍并且实操一遍),sql 也需要重新学一遍。这不是最近学完数据结构,算法上有点迷茫了,学算法也仅仅是为了找工作用的并且提升思维能力的。

    现在基础上也就是在学计算机组成原理看的是 CSAPP ,后续打算看操作系统。学这些也仅仅想让自己的内功修炼的更好一点,其次就是也在学一些 Boot 开源项目,所以时间有点紧迫哈哈哈哈。

    其实随着认知和知识的增加,包括听周边人的建议,也会反复对自己现有的计划稍作修改。转 Go 其实没怎么想过,其实转一门语言再容易也只是相对的,也需要耗费时间包括了解这个语言的知识以及行情。

    南京外包真的太多了...暂时不考虑毕业之后留在这里,目前的想法就是年轻的时候在杭州找找机会打拼打拼,在苏州立居。打算升本的这两年正好可以先避一避目前的不好的市场,正好可以观摩观摩,本科找个中小的地方实习一下,等毕业的时候看看市场会不会好过一些。

    希望咱们都可以在前进过程中被多一点的幸运眷顾哈哈哈,其实抛开目前不好的市场,我觉得有一些东西还是值得向往的!加油捏!
    c2const
        19
    c2const  
       2023 年 5 月 22 日   1
    看完《算法》红书,工作中 99%的情况都够用了,面试前刷面试题就行了。
    smallWang
        20
    smallWang  
       2023 年 5 月 22 日
    @Poluk 不管干啥 赚钱是最终目的,你现在目光、规划挺好的,不像我大学自己摸爬滚打了 3 年,操作系统这种的,你是真打算把计算机基础学一遍啊? 叼叼叼,我是啥都没学,主打的就是一个临时抱佛脚。多实操多折腾,以后如果来杭州可以面基哈哈哈哈。

    还有最重要的一门课 社会 等着你来学哦
    Poluk
        21
    Poluk  
    OP
       2023 年 5 月 22 日
    @smallWang #20 哈哈哈哈,趁着还有“一点时间”我觉得可以学一下计算机基础。不能说把它学精,但是也要有个概念吧,我觉得这是仅仅能提升一点竞争力的东西了。

    社会是门难修的课程,不过也慢慢做好准备去接受被它毒打。等后面有机会在杭州发展了,指定面基,还得请你多多指导。
    smallWang
        22
    smallWang  
       2023 年 5 月 22 日   1
    @Poluk 谈不上指导 我是大专人就出来找工作了 ,专升本 差了十几分 英语裸考的我,对英语是 dna 里的厌恶。无所谓了 早点出来混社会也好,不然的话现在本科毕业都找不到工作,因祸得福了吧。

    记得留点时间找女朋友,不然以后出校园了就难咯(有了当我没说)

    以后找个大公司内推我哈哈哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2583 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 02:35 PVG 10:35 LAX 18:35 JFK 21:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86