├── README.md └── helloworld.cpp /README.md: -------------------------------------------------------------------------------- 1 | # Introduction-to-Algorithms 2 | Materials for newbees to learn coding skills and algorithms 3 | 注:这些都是作者自己转码路上觉得比较好的资料,不代表适合所有人。所有资料都是网上公开和免费的,可能需要注册账号。基本上是各个话题里面作者所看过的最高质量的讲解。可以关注自己薄弱的环节,把视频精心看一遍,相信会有收获。 4 | 5 | 6 | ### 基础: 7 | 8 | #### 1. Java 语法基础和数据结构 9 | 10 | + CS61B by UCB 11 | 12 | + https://www.bilibili.com/video/BV18x411L7yy 13 | 14 | 15 | 16 | #### 2. 各语言API 17 | 18 | + 9:40秒开始,横向对比各个语言的常用数据结构 19 | 20 | + https://www.youtube.com/watch?v=ZyCQBrcr6jk 21 | 22 | 23 | #### 3. 二分查找 24 | + 从边界考虑 25 | 26 | + https://labuladong.gitbook.io/algo/di-ling-zhang-bi-du-xi-lie/er-fen-cha-zhao-xiang-jie 27 | 28 | + 我自己写在一亩三分地里的,从lower bound意义出发 29 | 30 | + https://www.1point3acres.com/bbs/thread-660719-1-1.html 31 | 32 | + JasonLi的知乎回答 33 | 34 | + https://www.zhihu.com/question/36132386/answer/530313852 35 | 36 | #### 4. recursion/递归/backtracking 37 | 38 | + 基础版可以看一下Marty Stepp的课程 第八讲到第15讲,这是第一个给我讲明白的 39 | 40 | + https://www.bilibili.com/video/BV1B4411W7Ld?p=8 41 | 42 | + 这个印度人的视频质量也很高(主要看merge sort和quick sort那边讲的recursion过程) 43 | 44 | + https://www.youtube.com/watch?v=aGjL7YXI31Q&list=PLEbnTDJUr_IeHYw_sfBOJ6gk5pie0yP-0 45 | 46 | + 自己写的总结: 47 | 48 | + https://www.1point3acres.com/bbs/thread-583166-1-1.html 49 | 50 | + 后来发现大佬的总结,目前看到的最清楚版本: 51 | 52 | + https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/ 53 | 54 | #### 5. Union find 55 | 56 | + Princeton的Coursera上面的课 57 | 58 | + https://www.coursera.org/learn/algorithms-part1/home/welcome 59 | 60 | + B站up主,正月点灯笼,讲得很详细,语速较慢,可以开2倍速 61 | 62 | + https://www.bilibili.com/video/BV13t411v7Fs?from=search&seid=10266519278619611393 63 | 64 | + Youtube的up主,williamfiest 65 | 66 | + https://www.youtube.com/watch?v=ibjEGG7ylHk&list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu&index=19 67 | 68 | 69 | 70 | #### 6. 图论 71 | 72 | + Youtube的up主,williamfiest 73 | 74 | + https://www.youtube.com/watch?v=DgXR2OWQnLc&list=PLDV1Zeh2NRsDGO4--qE8yH72HFL1Km93P 75 | 76 | + Princeton Algorithm part II 77 | 78 | + https://www.coursera.org/learn/algorithms-part2/home/welcome 79 | 80 | 81 | #### 7. 位运算 82 | 83 | + B站up主大雪菜 84 | 85 | + https://www.bilibili.com/video/BV1ot411H7EF?from=search&seid=13277262989814717107 86 | 87 | + B站up主正月点灯笼 88 | 89 | + https://www.bilibili.com/video/BV1ss41197pu 90 | 91 | + CSAPP CMU神课 92 | 93 | + https://www.bilibili.com/video/BV1iW411d7hd?from=search&seid=3081520128097141404 94 | 95 | #### 8. sorting 96 | 97 | + 基本上涵盖在以上的视频中. 98 | 99 | + 这个印度人的视频质量也很高 100 | 101 | + https://www.youtube.com/watch?v=aGjL7YXI31Q&list=PLEbnTDJUr_IeHYw_sfBOJ6gk5pie0yP-0 102 | 103 | + Princeton的Coursera上面的课 104 | 105 | + https://www.coursera.org/learn/algorithms-part1/home/welcome 106 | 107 | #### 9. Heap 108 | 109 | + 印度博主 110 | 111 | + https://www.youtube.com/watch?v=40iljMQmqmY&list=PLEbnTDJUr_IeHYw_sfBOJ6gk5pie0yP-0&index=11 112 | 113 | + Princeton的Coursera上面的课 114 | 115 | + https://www.coursera.org/learn/algorithms-part1/home/welcome 116 | 117 | 118 | ### 进阶 119 | 120 | #### 1. Trie 121 | 122 | + Princeton Algorithm part II 123 | 124 | + https://www.coursera.org/learn/algorithms-part2/home/welcome 125 | 126 | + leetcode implement trie 127 | 128 | + https://leetcode.com/problems/implement-trie-prefix-tree/ 129 | 130 | #### 2. Binary Index Tree 131 | 132 | + Youtube WilliamFiest 133 | 134 | + https://www.youtube.com/playlist?list=PLDV1Zeh2NRsCvoyP-bztk6uXAYoyZg_U9 135 | 136 | #### 3. 线段树 137 | 138 | + B站up主正月点灯笼 139 | 140 | + https://www.bilibili.com/video/BV1cb411t7AM?from=search&seid=15714724548765254617 141 | 142 | #### 4. KMP 143 | 144 | + Princeton Algorithm part II (dfa版) 145 | 146 | + https://www.coursera.org/learn/algorithms-part2/home/welcome 147 | 148 | + labuladong总结版(dfa) 149 | 150 | + https://labuladong.gitbook.io/algo/dong-tai-gui-hua-xi-lie/dong-tai-gui-hua-zhi-kmp-zi-fu-pi-pei-suan-fa 151 | 152 | + 清华大学邓俊辉(nfa) 153 | 154 | + https://www.bilibili.com/video/BV1db411L71m?p=400 155 | 156 | + 自己总结的写法 157 | 158 | + https://leetcode.com/problems/implement-strstr/discuss/763754/java-three-versions-of-kmp 159 | 160 | #### 5. 背包问题 161 | 162 | + B站up主大雪菜 163 | 164 | + https://www.bilibili.com/video/BV1qt411Z7nE?from=search&seid=9737027559014762758 165 | 166 | + 背包九讲 167 | 168 | + 可自行Google 169 | 170 | #### 6. Range Minimum Query/ Sparse Table 171 | 172 | + 算法竞赛进阶指南 (B站up大雪菜 , 李煜东巨佬主讲)31:30 开始,前面可以跳过 173 | 174 | + https://www.bilibili.com/video/BV14t411t73D?from=search&seid=4709027753512547842 175 | 176 | #### 7. 贪心 177 | 178 | + B站算法竞赛-陈锋 虽然写得是算法竞赛,但是几乎所有的LC和面试的贪心题目都出自这几个模板。 179 | 180 | + https://www.bilibili.com/video/BV1hJ411v7w4?from=search&seid=1511204115643773512 181 | 182 | + 济公学院-贪心 183 | 184 | + https://www.youtube.com/watch?v=MVLClW7-U7A&t=7s 185 | 186 | #### 8. 单调队列/单调栈 187 | 188 | + 也没有发现质量特别高的,但是基本上可以解决的问题就那么两三种,可以参考B站up大雪菜 189 | 190 | + https://www.bilibili.com/video/BV1Lb411w7ep?from=search&seid=3886397826346115749 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | ### 总结: 199 | 基本上来源是这么几个地方,首先很多基础的东西主要来自四门课,CS61B by UCB, 200 | CS106B by Stanford, Algorithm by Princeton, CSAPP by CMU.这些公开课都是精品中的精品,转专业的要打好基础尽量过一遍这些课程。 201 | 其他的主要是一些算法的应用和讲解。 202 | 203 | 主要推荐的有, 204 | 205 | YouTube的WilliamFiest,这个人做的图片和动图很好,思路很清晰。 206 | 207 | YouTube上印度博主Ravindrababu Ravula,用的白板,思路也很清晰。 208 | 209 | B站up主正月点灯笼,这个up主很细致,而且会带你走一遍过程,写一遍代码。 210 | 211 | B站up主大雪菜,讲得很清晰,而且每个题都会现场示范代码实现。 212 | 213 | 微信公众号 labuladong, 讲了很多算法,总结得挺到位的。 214 | 215 | 力扣国服liweiwei1419,可能是目前最好的回溯算法讲解。 216 | 217 | 218 | -------------------------------------------------------------------------------- /helloworld.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using namespace std; 3 | int main() { 4 | cout << "Hello world!" << endl; 5 | return 0; 6 | } 7 | --------------------------------------------------------------------------------