讨论/算法和数据结构/小白来请教怎么学习算法/
小白来请教怎么学习算法

本人今年大二在读,java,c都会,数据结构会一些,高数基础不好,想深入学习算法,请教下各位大佬应该按什么顺序学习?

最好能有类似学习书单,谢谢各位大佬!!!

展开讨论

同推荐算法4,你说java和c都会,那我不推荐你用c刷,推荐java。虽然说算法的实现不依赖于某种语言,但是你的思维会,如果不相信的话,你可以做上一两道树,图 或者字符串之类的题目,看看你是用java做着顺手还是用c做着顺手。你才大二的话,算导也是可以看的(但是不太推荐一上来就看),如果你是那种更习惯于从互联网上学习的人,那么你完全可以不看书,直接从力扣入手,这样做的好处是,你不会浪费很多时间去学了一堆根本用不到的算法(比如你要是看算导的话可能会看很久的红黑树(当然大神也可能看个半个小时然后动手刷刷刷实现了))。坏处就是,一开始挫败感可能会很强烈,尤其是你面对一道中等的题目,可能在评论区或者题解中这就是一道板子题,但是刚开始时入手时可能百思不得解。我记忆很深刻的是,我一个月前开始正式的刷,碰到了那道单词路径问题(hot100里应该有,你可以去看看)想了半个小时不知道该怎么做。点进题解一看,更绝望了,dfs+回溯+状态重置。我的妈呀,我一开始对于dfs的认识还是仅限于只有对于一个实实在在的图才可以(再次抱住菜哭的自己)。现在(依然很菜)但是再碰到这种题目,起码能一眼就看出来这类题目的套路了。我还记得我一开始在接触回溯法时,心想,这不就是dfs么,为啥叫回溯了,直到我独立的把n皇后那两道题目ac了,才明白这两者的区别。然后以后就能很自然写出了回溯了。有的时候,可能你在看书的时候,算法的伪代码描述我们都很清楚。但是你会发现,当你静下心来去把他独立实现时,你会碰到各种坑。
看书的好处是你会学的相对系统一些,了解一些最常用用的算法和数据结构。明白怎么去表达树结构,图结构。trie,搜索树,优先队列等等。不然到时候题解说开个优先队列,然后遍历就可以了,我们还在黑人问号。
总之,总结就是,不一定拘泥于只看书或者只刷力扣,可以两者结合。我在前20天基本上就是看一天书,刷一天力扣,在做力扣时尽量先思考这是一道什么题目。看书的话建议选一本带源码的,因为看代码能够很好地加深我们对书里所描述算法的理解。书的话,可以刷算法4,同时也推荐算法竞赛(日本的那两本,虽然用cpp写的,但是跟java没啥区别,都是用了语言的很小的子集)。但是一定要坚持刷,当你做过一段时间,你可以去打周赛,或者你不满足于力扣这种级别的题目了,觉得你特别适合学习算法的话,可以刷算导。或者去参加别的比赛。
最后,一个小提醒,做完题之后,不管你的结果是双100还是双0,一定要养成看题解的习惯。你会发现有些题解或者评论真的是宝藏。dfs时搜索某些路径作为答案时,用个辅助栈就是我在评论区学到的。
happy coding. :)
--刷题一个月的一丢丢心得(ps,真心羡慕你们这些大二就有刷题意识的同学,研二的柠檬精路过)

1
展开全部 5 讨论