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

怎么样系统性地学习数据结构与算法(和 ACM 有关的)?

  •  
  •   featureoverload · 2022-04-07 12:52:40 +08:00 · 2989 次点击
    这是一个创建于 958 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果只说数据结构和算法的话,肯定会有《算法导论》这个回答。

    但是就算完全看完《算法导论》,很多 LeetCode 题目应该还是不会做吧?

    比如说有些用到单调栈的数据结构来解题的,《算法导论》中有吗?

    我确实不清楚,不然也不会问这个问题了,下同。

    比如有些使用滑窗思想的(双指针、快慢指针),

    比如求解 [最长子序列] ,将暴力 O(n^2) 解法,通过 Patient Sorting 算法,降为 O(nlogn),

    等等等...

    当然,从刷题可以逐步地接触到这些算法;

    但是从我个人的角度触发,刷题接触算法太零散了,就算将使用相同的数据结构、算法、思路放到一起归类, 还是很零散,就感觉有些看到某个算法,你不知道这个算法和其它算法有什么“血源”关系。

    因为,我感觉一个没学过的算法,不肯能是从石头里蹦出来的吧?

    重归和某些其它算法有一些什么逻辑关系。

    所以,我的意思就是,基于类似这中逻辑关系脉络,来系统性地学习数据结构与算法,有什么资料、途径和方法吗?

    12 条回复    2022-04-08 14:14:34 +08:00
    Itoktsnhc
        1
    Itoktsnhc  
       2022-04-07 13:19:29 +08:00   ❤️ 1
    https://oi-wiki.org/
    然后还看 AcWing 的一些视频
    Itoktsnhc
        2
    Itoktsnhc  
       2022-04-07 13:20:32 +08:00
    @Itoktsnhc 我是为了刷 LeetCode 效率高点,所以买了 Acwing 的基础课、提高课和 leetcode 相关的
    jiezhi
        3
    jiezhi  
       2022-04-07 13:24:50 +08:00
    Leetcode 里 Explore 不错啊,按主题练习也有讲解。然后再结合着书巩固。

    但总会有书里涉及不到的知识点,再结合题解学习。
    xiaochangchang
        4
    xiaochangchang  
       2022-04-07 13:42:24 +08:00   ❤️ 1
    推荐台湾师范大学网站 演算法笔记: https://web.ntnu.edu.tw/~algo/

    “就算完全看完《算法导论》,很多 LeetCode 题目应该还是不会做吧?”——是的没错,如果是学 ACM 有关的,还是要多做题。

    “但是从我个人的角度触发,刷题接触算法太零散了”——完全正确。到哪里系统地了解整个脉络呢?很多 ACM 的前辈都是比较乐于分享的,可以搜他们的博客来了解学习路线。我随便翻了一个供你参考: https://www.cnblogs.com/qscqesze/p/4363195.html
    MoYi123
        5
    MoYi123  
       2022-04-07 14:59:23 +08:00
    推荐一个 B 站 up 我是小蜗蜗
    现在主要有 2 个人在发视频, 一个是施韩原, 一个是杜瑜皓,你网上查一下就知道他们有多 nb 了.
    可以考虑去报名参加一下他们组织的课程.
    soupu626
        6
    soupu626  
       2022-04-07 15:16:52 +08:00
    《算法竞赛入门经典》 俗称紫书,基本就是针对竞赛的书了
    soupu626
        7
    soupu626  
       2022-04-07 15:22:51 +08:00
    https://oi-wiki.org/ 还有这个也适合查阅
    Volekingsg
        8
    Volekingsg  
       2022-04-07 15:39:09 +08:00
    还有《挑战程序设计竞赛》,个人觉得写的是最清楚的,代码风格也好
    aneostart173
        9
    aneostart173  
       2022-04-07 16:32:43 +08:00
    多练多想。
    dialtcp
        10
    dialtcp  
       2022-04-08 05:44:53 +08:00 via Android
    《算法竞赛进阶指南》,看书名是进阶,其实是入门和进阶都可以看的好书,可以配合 acwing 课程服用
    angryfish
        11
    angryfish  
       2022-04-08 08:49:21 +08:00   ❤️ 1
    作为曾经的 acm 渣渣,个人觉得这玩意真的在努力的基础下,离不开天赋。推荐刘汝佳系列的数。
    workingonescape
        12
    workingonescape  
       2022-04-08 14:14:34 +08:00
    @Itoktsnhc acwing 上好像是 c 语言写的答案。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3250 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:28 · PVG 20:28 · LAX 04:28 · JFK 07:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.