a - 数据结构实验之串一:kmp简单应用_关于新的算法和数据结构体系课程

很多同学都发现了,昨天,慕课网上线了我的算法与数据结构体系课程。

1ca301098c145ae3249102b1400a0189.png

在我看来,这个体系课程并不是一个全新的课程。虽然我在很努力地尝试在课程中添加很多新的元素。但是,基础的算法和数据结构所涉及的东西其实就那么多。绝大多数内容,在我之前慕课网的课程中都涵盖了。

也正是因为这个原因,之前,很多同学问起,我都说,自己并没有做新的课程。

其实,这个体系课程,主要是想解决大家在慕课网上系统学习算法的一个学习体验的问题。

可能很多同学都知道,我在慕课网上有一门《玩转数据结构》。《玩转数据结构》专注于讲解经典数据结构的底层实现。这个课程上线两年,有 6000 多人学习,大家近乎给出了满分的好评,让我受宠若惊。在这里,真的很感谢大家的支持。给大家鞠躬。

2e53f6b66e11741021691d5cc10040d1.png

但是,很多同学会问,如果想学习一下非数据结构的内容,比如排序算法,要到哪里学习?于是,我就要把他们指向我的另外一门课程,也是我在慕课网做的第一门课程《C++ 算法与数据结构》。

f3aa3660fe8bcaaa8a425b26f1a78e7b.png

但这样一来,又出现了很多问题。

首先,这门《C++ 算法与数据结构》的课程,视频是使用 C++ 讲的。虽然课程配套的代码包含了完整的 Java 代码,但还是有很多同学会介意和数据结构课程语言不一致的问题。这导致了学习体验不流畅。

其次,这门课程中,我也对二分搜索树,堆和并查集这三种数据结构进行了介绍。这些和我的《玩转数据结构》的内容重复了。

再有,很多同学因为想学习更“基础”的排序算法,才要去学习这门《C++ 算法与数据结构》。但偏偏,这门课程设计的初衷并不基础。这体现在很多方面,比如:

课程没有详细解析递归的执行过程,而是默认大家了解递归。这导致有些同学不能理解一些递归算法的具体执行过程,比如归并排序;

课程引入了索引堆这个高级数据结构,但其实,这并非必须。而索引堆的概念因为比较绕,给大家学习造成了门槛;

代码设计上一些地方抽象层次过高,比如泛型套了好几层,引入了迭代器一类的“设计”概念,导致很多同学在非算法逻辑方面需要投入大量精力,而不能专注于算法本身的学习;

等等等等。

也正是因为这些原因,这门课程后来被添加上了“综合提升”的字样。

这一切,都让我和慕课网都希望能够提供一个更加“系统化”的产品,让大家能够“一站式”地学习算法和数据结构。于是,这门新的《算法和数据结构体系课程》产生了。

整体来讲,大家可以认为,这门体系课程是《玩转数据结构》课程的扩充。《玩转数据结构》详细介绍了大多数经典数据结构的底层实现;这门课程则补上了绝大多数经典算法的底层实现讲解。

主要扩充的内容包括:十大排序算法;查找算法(二分查找为主);字符串相关算法;随机算法;外存算法和外存数据结构的简介。

这些看似不多,但详细展开,还是有不少内容的。甚至一些内容也是我之前的课程不涉及的。

比如,对于排序算法,希尔排序就是我之前的课程没有详细介绍的内容;

所有的非比较排序,我之前的课程都没有涉及,这次会专门介绍;

基于哈希表,以及诸如桶排序的思想(分块),我还会添加一个有意思的数据结构的讲解:SQRT 分解;

基于哈希的思想,我还会详细分析另一个刷题常见的字符串匹配思想:滚动哈希,以及 RK 算法;

关于二分查找,虽然我之前的课程介绍过,但过于简单。对于使用二分查找解决更复杂的问题,比如寻找上界和下界,包括在常见面试题中的应用,在这个课程中会做详细分析;

KMP 算法应该是我被同学问到的最多的算法了。这个课程中,我会用一章的内容,仔细地分析 KMP 算法,并给出两个实现。而且,这一章的内容将不仅仅局限在 KMP 自身:);

另外,课程还会集合一些“边边角角”的算法讲解,比如随机算法,外存算法,等等。

更多细碎的内容,我就不一一列举了。

以上是内容上的扩充介绍。在课程设计上,没有大变化。老套路:每一小节只解决一个针尖大的问题。层层迭代,不断递进优化,最终得到完整的算法。

有两个新的设计思考:

其一是,在课程进行过程中,加入了一些作业。大多数作业本质都是从另一角度思考某一个算法或者数据结构。我希望通过这样的设计,能够让大家更深刻地理解学习的内容。

其二,对于一些章节,我添加了“习题章节”,告诉大家:如果想“刷题”,和这一章内容相关的 Leetcode 习题都有哪些。对于特别经典的问题,我会进行讲解。

其实,《玩转数据结构》已经融合了 Leetcode 上的问题。这一点在这门课程中会有所加强。

尽管如此,“习题章节”并非这个课程的重点。我并不会大量地具体讲解 Leetcode 的真题,只是点到为止。

这个课程的核心依然是经典算法和数据结构的底层实现,如果大家能够真正地理解课程包含的所有算法和数据结构,并且能够根据自己的理解实现出来,那么,就已经完全达到学习目标,并且,我相信已经超过平均水平了。

至于“习题章节”,我设想的是:在课程维护过程中,对于同学们有共性的习题,进行不定期更新。或许现在,这个课程中的“习题章节”还不是重点,但积累一两年以后,将成为这个课程的另一个特色。

我完全可以理解很多同学急于刷题的心情。但在这里,我再次强调,这个课程不是“刷题课”。

我坚持认为:这个课程所讲解的所有内容,都是刷题的基础。如果你能够真正理解这个课程的所有内容,我相信之后进一步刷题准备面试,将事半功倍。

这个课程关注“经典算法和数据结构的底层实现”。所以,对于诸如回溯,贪心,动态规划等算法设计的思想,这门课程并不涉及。请大家一定注意。

实际上,如果一切顺利,在这门体系课程完结以后,我会再做一门完整的刷题课程,尝试详详细细地把刷题的各种套路讲清楚。

但是这门刷题体系课程的构想,要至少明年才能推出了。这过程会不会出什么岔子,我也不能肯定。

现在,如果大家对这类算法设计思想的学习有需求,并且急于面试,可以参考我的老课:《玩转算法面试》。不过,这门课程也是使用 C++ 讲解的,但是配套了完整 Java 代码。

153b955e19972217937118c34f650de2.png

另外,这个体系课程不包含图论算法。图论算法领域本身就包含相当多的内容,所以,我已经将他们单独放在一门课程中,进行详细讲解了。有兴趣的同学可以参考这门《玩转图论算法》:

16bca51082220dd4e70c2605ee9fa8ef.png

大家看到了,我计划的,在慕课网上完整的算法学习课程计划路线,是这样的:

想要学习算法和数据结构基础?就学习这门《算法和数据结构体系课程》;

想要进阶地系统了解图论算法?去学习《玩转图论算法》;

想要刷题?计划再出一门专门的系统刷题体系课程。只是计划,一切待定。现阶段可以看《玩转算法面试》。

最后,因为这个课程从设计上,是《玩转数据结构》的扩展,所以,我和慕课网商量,对每一名已经购买《玩转数据结构》的用户,都发一个 299 元的优惠券。

因为《玩转数据结构》的原价是 299 元。相当于,把这个课程原价退款给老用户,老用户可以考虑是否加价换购成这个新的体系课程。

如果不做换购,完全没有问题,不影响大家观看已经购买的《玩转数据结构》。并且,我也会继续在《玩转数据结构》的问答区回答问题。

至于新的体系课程的价格,即使有了这个 299 元的优惠,也需要 600 元。这个价格是我左右不了的了。

实际上,慕课网的价格政策一直在调整。尽管如此,我的每门课程,我都在争取让慕课网给出一个更低的价格,甚至在这个问题上,和慕课网急过眼。

比如我的《玩转数据结构》,25 小时的视频,299 元,相当于每小时只有十几块。我只能说,我真的尽力了。

这门体系课程的上新价格是 900 元。相当于慕课网重新评估,我的老版《玩转数据结构》,价值 450 元;新增加的另一半内容,也价值 450 元。

我完全可以理解对于一些老用户来说,新增加的内容,很多在我的其他课程中也学习过了,所以这个价格太亏了。

对此,我只能说抱歉了。我暂时没有解决方案了。

我也想过分章购买一类的策略,但是,这些功能慕课网并不支持。慕课网不支持也有它背后的产品理念,毕竟慕课网不能围绕我一个人的想法转。

因此,对于这部分老用户,我的建议是:如果你认为你所需要的额外内容不值这个额外的价格,请不要购买。

(希望慕课网不要打我)

实际上,我上面林林总总说了那么多,就是想说,新的体系课程,主要是为了优化用户的学习体验,进行一站式的学习的。

但是,对于很多老用户,因为已经学习了我以前的课程,虽然没有一站式的学习体验,但也已经实实在在学到了知识,甚至很多同学已经拿到了满意的 Offer,进入了人生的下一个阶段,在我看来,真的完全没有必要购买这个体系课程了。

有很多老用户告诉我,因为支持我,所以就算不看,也要买。我真的谢谢这些同学。给你们鞠躬。

但我也要号召理性消费。

有些同学说,就为了凑齐我的所有课,也要买。可还记得吗?我一直说,不要完美主义。所以,在买课这件事儿上,也不要完美主义。

请大家再复习一下我的《高效学习的秘密》。

这篇文章不是这门体系课程的广告。因为我主要在做课程的新老内容的对比,也没有突出这门课程的特点是什么。所以有一些新用户可能不知道我的课程特点。

但我不太喜欢,也不太会做广告,所以,如果有新用户对这个课程感兴趣,就去慕课网看课程介绍页面吧。网址我放在了这篇文章的“原文链接”中。

我只能说,课程是我用心设计的。但学习是一个主观的过程,能不能让每个人满意,我不敢打包票。

但我能保证:如果你参加了我的课程,学习过程中遇到了问题,在课程的问答区,我会尽自己最大努力,帮助每一名同学真正在算法和数据结构上,迈向一个新的台阶的。

再次感谢所有人对我的支持。

祝愿所有人,前途似锦。

大家加油!:)


本文相关阅读推荐:

如果真的学习人工智能

隐性知识

你真的相信技术吗?

证明一个谬论:全世界所有人年龄都一样


c0fe9c2bf3c7b6f17ffde799767c371e.png

因为今天的首推文章是广告,再加上这篇文章都是没用的废话,所以在这里,给大家发一个小红包

188.8 元,66 个名额。7 月 20 日(下周一)早上 8:30 开奖。

点个在看,抽奖更好运。点我抽奖!点我抽奖!点我抽奖!

如果喜欢我的文章,点个”在看“吧 b97b648170fb7db2693bbd1f0dc942ab.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值