王争
置顶
2018-11-23
小伙伴们的这篇文章的留言我就不一一回复了 看的我很感动 很多留言都写的太好了 我自己都受益匪浅 感谢🙏
110
P@tricK
2018-11-23
老师出这篇学习方法真的用心良苦,感觉现在的人真的很难再去付出100%的专注去学习了,特别是在职搬砖的人。
个人觉得,学习的关键在于决心和自律。
加油吧各位。
181
王楚然
2018-11-23
每天上班路上会看老师的文章。作为女生,逻辑能力比男生差,理科又一直不好。遇到红黑树已经让我彻底懵逼,有了多看数学书多培养数学思维的想法。每天坐地铁都想说我想歇一歇,可是每次都跟自己说,我就看一篇就好。每次因为自己的笨都想放弃。每次都坚持告诉自己,就算看不懂当做开阔眼界也很好。看到老师今天的文章我终于放心了,因为连老师都说,不花大力气是学不好的,那么我所做的努力还远远不够,更不用急着否定自己了,感谢老师在我觉得艰难的时候能写下这样的文章拉了我一把😁
5
155
Jerry银银
2018-11-24
老师真心用心良苦,感谢!
在学习的算法的过程中,个人也有一些感触,分享给大家。极客时间留言字数有限制,我只好将留言完整版放到了其它地方,然后只截取了一小段放在这里。有兴趣的,可以看看完整的心路历程:https://zhuanlan.zhihu.com/p/50733874
【做好心理准备:学习过程,时而兴奋,时而备受打击】
我学习算法的主线,是通过机械工业出版社出版的、Ellis Horowitz等人著作的《数据结构(C语言版)》。说实话,刚开始只看这一本书,问题也不太大,但是当我学习红黑树的时候,问题就来了。如果不知道这种数据结构如何由来的话,直接去学,就很容易懵。中间我因为工作繁忙,晚上经常加班到深夜,而红黑树很多次又看不懂,再加上身心很疲惫,很容易放弃;中间,我确实放弃了很多次,又重新捡起来很多次。所幸的是,我没有真正的放弃(因为有梦想的支持)。某一天,我真正决定了:必须搞懂红黑树。于是,在国庆节期间,再加上我请了三天假,总共花了十天左右的时间,仔细研究二叉树查找树的特性,再去leetcode上找二叉树基础性的题目做;等二叉树学习得差不多了,再继续深入2-3树,真正理解二叉树为什么需要『平衡』,仔细研究2-3树如何构造,反复在草稿纸画图;当搞明白了2-3树的时,深入研究红黑树,理解rotate left、rotate right,这中间依然是在草稿纸进行反复画图,理解红黑树的构造。
这中间还有一个小插曲,在《算法》一书中,红黑树的定义是这样的:红黑树是含有红黑链接并满足下列条件的二叉查找树:
1. 红链接均为左链接;
2. 没有任何一个结点同时和两条红链接相连;
3. 该树是完美黑色平衡的,即任意空链接到根结点的路经上的黑链接数量相同。
当看到第一条的时候,我直接就懵了。因为,我看到《算法导论》和一些网络博客对红黑树的定义允许有红色右链接呀。为了解答这个问题,我查阅了各种资料,最后在wikipedia红黑树条目中找到了真相:原来Robert Sedgewick 这样定义,是为了简单化红黑树,精简红黑树实现的代码。
学习红黑树的过程,我犯了一些错误:
1. 贪快,缺乏耐心。有时候会看得过快,忽略之前章节的学习,直接进入后续章节学习。但是『专业性很强的教课书』一般都会有条理的进行编排,也就是说,前面的章节可能是后面章节的『原因』,如果基础不是很好,直接进入『结果』的学习,导致的情况就是:懵!
2. 一本书看不懂,就死磕。书籍是人写的,每个人对每个领域的理解不一样,阐述也可能不一样,某一个人说出来的『东西』不是很容易理解,也有可能是对方讲的不够好嘛。试试找找其它的材料看看呢!我在学习红黑树的时候,死磕了一本书之后,发现不行,终于意识到得找找其它同类型的资料了,最终发现了《算法》一书(这么经典的书,我都不知道),同时还在网上发现了一个比较好的网站:https://visualgo.net/en 《算法》一书用的描述语言是Java,合胃口; 理解红黑树,我就通过《算法》一书理解的。我觉得作者就非常抓重点和让人容易理解,后来一查,才发现,作者 Robert Sedgewick 曾经对红黑进行改造,让红黑树的代码实现精简了很多。可想而知,作者对红黑树的理解够透彻和权威了吧。
通过这次的经历,我稍微把自己学习算法的方式进行了调整:
1. 我购入了《算法图解》一书,在稍微轻松的心情中,对算法有了一个整体的脉络,连带急切想知道的图和动态规划都稍微了解了一下
2. 我开始用线上的一些比较好的网站,进行一些『练习』。比如在熟悉基础概念阶段,使用https://visualgo.net/en进行练习,基础概念掌握差不多了之后,开始在leetcode上找一些easy的题目开始做(leetcode上easy题目,虽说找到最优解也要花一点功夫,可以至少起初能找到一些方案)
既然为了精通算法,多买几本算法参考书还是要的,多花点钱也没什么大不了的。😄 为了搞懂问题,我参考的资料一般有:权威的专业书籍、Wikipedia、一些人的博客
写完这一段时,我突然想到《士兵突击》中那句经典的台词:“不抛弃,不放弃”。 对算法也得多喊喊:“不抛弃,不放弃”!
展开
2
68
小鹿动画学编程
2018-11-23
王争老师分享的这波很不错,我也一直坚信甚至经常和身边的小伙伴们提起「学习没有捷径,只有付出与不付出」。有一点想和王争老师分享的是,我觉得学习像数据结构与算法这种难度比较大,零碎的知识点比较多,导致了很多同学处于一种迷茫的阶段的状况,原因有一下几种:
1、执行力不足,每当开始学习的时候,一些小的基础概念都没有弄明白,一味地学习后边的知识,导致学习的挫败感越来越强。
2、学习技巧。王争老师也说了,学霸有没有学习方法我们不知道,毕竟我们是玩技术的,不像是学霸每天和各种学科打交道,我之前也是一个学渣,更别说是数据结构与算法了,最基础的程序语言都很难弄明白,但是当我入门一门语言的时候,感觉再学习其他的语言和编程就感觉很快就会入门。我认真反思了一下,原因就是一个好的学习方法实在是太重要的,就说数据结构吧,很多人可能没有想过怎么才能让自己王争老师分享的每一篇文章都找到一根线掌握起来,然后将所有的课和知识点掌握起来,这就涉及到学习方法问题了,因为自己对学习方法研究比较深,也经常在朋友圈和公众号给我的小伙伴们更多的分享学习方法,因为我觉得这比分享更多的技术更为重要,有句话说的好「治病先治根」,哪里有病,首先找到病根的原因,然后对症下药。
3、习惯。我觉得坚持学习,还不如说成一种习惯。自从王争老师出了这门数据结构与算法课程之后,我逐渐爱上了这门科目,之前课老师上讲很基础,涉及不到那么深,再加上买的那些书籍资料太乏味,导致让我很难学习下去。王争老师这门课出了之后,感觉学习数据结构也没有这么难,自己也研究了一套学习数据结构的方法,正在努力给自己完善中。在学校做小项目时,很多问题导致我无法去解决,身边几乎没人去学习这么重要的科目,学习有的重要的技巧就是活学活用,这门课很多的技术解决了我实际的问题,有时候就是恍然大悟,由于自己跟着王争老师学习的比较深入,遇到问题就像是条件反射一样,遇到了一个很难解决的问题,脑子里就不由自主的跳出一个数据结构的解决方法,然后仔细一想,确实可以解决这个方法。也逐渐的,每天看王争老师分享的数据结构与算法成为了一种习惯,每天都去学习思考,都要简单做做笔记,一天不去看,就感觉今天有什么事情没有完成一样,我觉得自己已经深爱上了这个课程,成为了一种习惯。
最后感谢极客时间,感谢王争老师能够出这么一门好的数据结构与算法的文章,让我受益很多。
展开
38
伟忠
2018-11-23
赞啊,我是从药学转计算机的,中间吃了多少苦恐怕只有自己懂,只有真爱,不断坚持,才能深入理解。
Never give up
24
fumeck.com🍋🌴s...
2018-11-23
买了快二十个专栏.就数老师和《趣谈网络协议》这两个专栏最用心了。
授人以鱼更授人以渔,很庆幸我能坚持,一周也就三更硬啃下来不要掉队太久就能跟上大队
我的学习方法是先把理论和概念先弄懂,至于代码的实现与细节以后有时间再来专栏看一遍仔细雕琢。这样以后遇到问题起码有解决思路了再说,再对症下药把解决方案对应的专栏里代码与实现细节弄懂它
然后就是多看留言,真正的精华其实在这里。大家一起坚持,加油
1
21
醉比
2018-11-23
既然老师都总结了这么多东西,那我们当然也不能不反思吧。说一说我的看法,对于从事这份工作的人来说,想要看懂作者的文章,并不难,这也就能反应出作者的文章并不是写得不明白,如果真的理解不了可能就是基础还需要加强。其次,弄懂并不难,可是是否掌握,这一点只有我们自己内心才最清楚。我们不妨扪心自问,很多地方到底掌握了没有,代码自己实现了没有,说实话考复制代码自己运行,这真的不算掌握。说实话我自己也有很多没掌握的地方,每周一三五早上学完习,其实也就学完了,我保证了每天文章都看懂了,但是今天我回顾前面的课程,真正能让我清晰的记住的东西,还是太朦胧太少了。自身也确实缺少了一些韧劲吧,有些代码,看着很简单,你让我关了网页自己写,我还真是在写bug。工作后的人需要沉下心来,需要专注的学习一块内容,才是正确有效的学习方式。否则学一会jvm,学一会算法,学一会springboot,可能就导致什么也没记住。如果你的状态和我一样,共勉吧,沉下心来,愿我们在我们的工作领域,都能更上一层楼。
17
Leslie心蓝
2018-11-23
很多内容当时感觉学会了,理解了,但是很快又忘了。。。老是记不住。。。
14
$Jason
2018-11-26
老师,我一直有个学习的困惑,排序哪块的知识看了多次,有一次看了好久终于看懂了。但是事后再去看的时候依然想不起来思路是什么了,越学越忘,然后后面就堆积了很多课。到现在依然卡在这里。然后前面的数据结构的章节也有点忘记了,每次都从头学,觉得效率不高。
9
失火的夏天
2018-11-23
老师说的很对,其实数据结构和算法的学习嘛,三分学,七分练。打个最简单的例子,单链表反转这个算法,思路都非常简单。就是指针反向,但是要真正自己闭卷写出来的,其实没有那么容易。只有自己真正动手了,才算把东西给学习和练习了。我个人对数据结构和算法挺喜欢的,所以一般有这方面的课程都会来学习。这边也打一个广告~覃超老师那边是关于算法面试的视频课,说了一些面试的情况和解题的技巧,有兴趣的同学也可以去那边学习,本人是两边都有购买。两位老师各有特点,学习嘛,博采众长。
说一点自己的想法,看了老师这篇文章,其实心里还是有点窃喜的,为什么呢?因为我发现老师这样的大牛,以前也被这些问题卡死了这么久。哈哈……所以没什么害怕的。比如红黑树的学习,我自己当时是手动把treemap的的代码相当于自己改了一遍,把<key,value>改成了<E>的那种红黑树,虽然写完后自己大部分也忘记了,尤其是删除那块。但是写的过程中自己是在思考的,会在边上写下注释和自己的想法,我认为这些东西比代码本身重要,因为这些才是自己学习留下来的东西。学习知识,然后把知识忘记,剩下来的东西就是你学到的,我认为就是这个了。
展开
9
勿闻轩外香
2018-11-23
我并不是掉队,而是在研究的过程中,老师更新课程了,所有现在才研究到一半
6
好名字可以让你的朋友...
2018-11-25
大家好,我是老年人学编程. 确实啊, 难度在那摆着. 抽象思维的能力需要时间, 只能一点点死磕了. 今天没搞懂, 写不出代码. 我是不会放弃的, 明天还继续. 要是连着3天都没搞懂.. 我就会先放放. 让这个东西在脑袋里发酵下. 有时候突然在地铁上,感觉就有了. 代码验证就 OK. 有点小成就感的啦.
5
Vincent
2018-11-23
之前一段时间很忙,掉了五六节课程。最近终于又赶上来了,在有时间的情况下,都自己实现一遍。我发现听懂看懂不一定真的懂了,只有动手了才知道是否深刻理解了。立一个flag把课程的所有数据结构都实现一次。
5
K战神
2018-11-24
你好,争哥,我是一个开发快七年的程序员。
平日里内心明明白白的知道基础差或者可以说基础不够系统,
因为确实平时业务压力大,加班,家庭慢慢在更多的占用精力。
以前我有很好的学习习惯,但是最近有了孩子这两年,我放松了。我给自己的理由是家庭占据了平时的学习时间。
听过你的开头的课程对我来说是一种警醒和反思。我对自己重新做了学习规划,不仅仅是算法。
我没有掉队,只是在慢慢消化你前面讲解的东西,还有评论中有些大牛提到的知识盲点。
我会平时开车或者地铁时候看或者听。会有很多的不懂的地方,也会了解整个的知识点和体系。我就带着问题通读一遍书籍,或者我通读一遍书籍后再来听,带着问题和重点再去查资料。
深入完一块内容后,我会写博客整理思路。然后出ppt分享给组内成员。
也有过怀疑和困惑,团队的领导或者其他人普遍认为算法结构太难,学习了没用。我也想说,之前看到你回复给其他人的留言:算法就像学习数学一样。所以,我的理解是有没有用自己说的算。学习了就要思考,思考了就要争取在项目中反复观察留意。比如复杂度,比如递归,比如二分法。先用,好不好另说。至少不要停留在理论。很多人学习完留个笔记就走了,或者跟着几次就掉队的人吧。我想这些人的一部分,有可能成为将来在周围那种说学习算法有什么用的人。我现在周围很多开发都用异样的眼光看我,有点像在说:别装了,有什么用。
即便是没人怀疑,有时候自己也会问自己,有什么用吗?
我不管,学到了就是我的,只要能从中学习到东西就是好的。毕竟,技术需要慢慢积累。
从中不仅仅是学习文章内容。有可能收获的是别人的学习技巧,或者重燃学习动力,再或者是评论中学习到的新的知识点。
我前几期也是留过问题和评论。我没有掉队。我只是在好好消化,好好反馈,有可能我在学习到后面几期也会有问题提问。希望争哥能略微关注,也希望大家都回头看看。坚持却是不容易。
大家也不要为了学习而学习,多多消化。我这次评论因为我是开发中确实遇到一个问题。正巧想上来评论一下,让大牛们提点一二。一会我再发个问题。
展开
1
4
梁成志(鹏金所)
2018-11-23
从这篇专栏可以看出王峥老师是非常用心,很负责任,希望大家真正学会和学好算法的。
我在学跳表的时候,花了几天的时候才想清楚,领略到妙点的时候,后来有种拍大腿的感觉,觉得这种数据结构的设计怎么好神奇。学快排和归纳排序,也感受到了算法的奇妙,都是前人很多研究的结果。专栏也有提到,跳表这种数据结构在很多年都没有真正的去写好的,都是存在缺陷,也证明了数据结构和算法,其实是一种在成长和演化。我们有幸跟随王峥老师学习,用最通俗的学习很难得。我大学的时候学数据结构我记得是很糊涂,知其然,不知所以然。而且大学泛于理论,学起来没什么兴趣和枯燥。
王峥老师举了很多实用的例子,还有结合实现,在工作中很常用的,比如redis、map用到跳表、散列表这种数据结构,拍大腿,原来是这样的。也感受到了,如果你不懂数据结构,很难真正理解,为什么它会存在和发展。在前段时间,我用阻塞队列实现了跟踪第三方交易状态,能在不损害性能的情况下,秒同步第三方的结果,这让我感受到数据结构的强大。也许我们还能用于很多地方。
这里很多大神,希望跟着王峥老师一点点学习和进步。希望大家不要放弃。也不要去背。真正理解了,把数据结构算法奇妙领略到,将来变种成自己设计成自己的数据结构,去实现和设计这些问题才真正有趣。
展开
4
对方正在输入
2018-11-23
说到底还是很多人太浮躁了,静不下心来
3
顾浚源
2018-11-23
醍醐灌顶,生活里想要掌握的东西太多了,想要健身想要学乐器想要变成大神,可稍稍有点想放弃的话这样的念头就会无限扩大,专注自制可太重要了!
3
末了 。
2018-11-23
这个鸡汤来的真及时,我是老师眼中那些没有基础的学生,所以看起来很费劲,一直似懂非懂,越到后面就越不懂了。不光是算法吧,其他所有学习都是这样,逆境总会有的,加油吧自己
3
刘十一
2019-04-09
放弃,重拾,放弃,重拾...承认自己笨一点,慢慢跟💪💪💪
2
我们在线,来聊聊吧
✕
您好,当前有专业客服人员在线,让我们来帮助您吧。
我们在线,来聊聊吧