V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Poluk
V2EX  ›  程序员

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

  •  
  •   Poluk · 334 天前 · 2498 次点击
    这是一个创建于 334 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Java 岗位多也卷,但是转其他的话也就只剩目前呈上升趋势的 Go ,但是相对 Java 来说 Go 语言岗位更少吧?
    smallWang
        17
    smallWang  
       332 天前
    @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
       332 天前
    @smallWang #17 其实我个人的期待并不想做一个简单的 CRUD 工程师哈哈哈哈,也许有点期望过高。不过这只是最终理想罢了。

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

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

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

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

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

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

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

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

    以后找个大公司内推我哈哈哈
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2885 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:29 · PVG 08:29 · LAX 17:29 · JFK 20:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.