刚学完数据结构的基础,在 B 站听的王卓老师的课。
打算学完算法就着手去刷题的,不过现在要开始进行算法的学习有点迷茫,这两天听的左程云体系班的课程,听完了几节自认为效果并不是很好...比如归并排序的代码讲完+两道例题还是不会手动去实现。
V 友能给些学算法的思路和建议吗?或者推荐课程 /书籍也行,之前下载过《算法》第四版的红书,暂时还没看,听说对新手比较友好还是 Java 语言的。
1
Light3 2023-05-20 17:44:10 +08:00
直接上力扣刷就好了..
看 10 遍不如 写一遍.. |
2
Poluk OP @Light3 只会基本的数据结构...那些常见的算法还有动态规划,BFS,DFS,回溯,分治都不用特意学一下?直接上 LeetCode Hot100 题能 ok 吗?
|
3
C47CH 2023-05-20 19:33:15 +08:00 1
建议先看书。个人不喜欢没有准备的刷题。
|
4
yongdongjino3 2023-05-20 19:46:51 +08:00 2
cs61a+cs61b 也可以先看看算法导论
|
5
lostberryzz 2023-05-20 20:10:24 +08:00 1
语言基础+大致的数据结构和算法的概念理解之后,按照这个刷就行 https://www.programmercarl.com/
第一遍想不出来没关系,看题解理解之后自己写一遍,然后记点必要的笔记即可,之后再一轮轮的刷加强记忆。 |
6
xywz 2023-05-20 20:26:22 +08:00 1
可以先跟着这个教程刷题 https://labuladong.github.io/algo/ ,里面根据知识点分类,免费的看完就够了,后面就自己刷题。
比较全的算法知识,需要有一点基础再看: https://oi-wiki.org/ |
7
hello2090 2023-05-20 21:10:44 +08:00 1
bfs dfs dp 看看算法导论就可以刷起来啦。其实算法导论这么长很多是在算复杂度,你知道 map 能 put/get 就能刷题了啦
|
8
Doragd 2023-05-21 16:10:21 +08:00 1
没搞懂为啥总有人在别人初学的时候就推荐算法导论,我推荐 https://programmercarl.com/ ,里面关于 dfs ,bfs 也有很好的讲解
|
9
CLMan 2023-05-21 21:12:34 +08:00 1
《算法导论》属于学院派大部头书,正规科班拿来做教材没啥问题,行业人员拿来做参考资料也没啥问题,拿来自学就是有问题,全是伪代码,而且根本读不完。
《算法 4 》整体还行,但是缺点也很明显,个人感觉还是厚了点,而且缺失一些内容,比如动态规划。 《数据结构与算法分析》研究生看的书籍,主要是讲分析算法复杂度的,不适合拿来自学。 其它算法书也读过,没列出来,就我读过的几本算法书籍来说,没有一本是适合自学的完美书籍,但硬要推荐一本的话,《算法 4 》应该还算勉强。 软件开发工程师级别(本科级别)的需要掌握的: - 算法常识:复杂度相关概念,基本算法:排序、优先级、查找,基本数据结构:数组、队列、堆、树、图,等等 - 实际编码能力,刷题 算法常识就是看书或者看视频或者上课,选你最容易接受的,搭建一个基本的知识框架,不要钻牛角尖。 有了知识框架就开始刷题,再根据刷题去巩固、完善你的知识框架。 |
10
apake 2023-05-22 10:01:05 +08:00 via Android
初学编程,建议从函数式入手, 提高抽象思维能力后学算法会更轻松一点。 cs61a + sicp +sicp-python 版本
|
11
huajieyu 2023-05-22 10:25:40 +08:00 1
正在 acwing 上学习算法,刷完了语法基础课,正在刷算法基础课,感觉学习效果还不错。
|
12
Poluk OP @CLMan 非常感谢!《算法导论》确实很厚,里面有很多数学证明,而且自己去看也确实不知道哪里不用看之类的。
前面有人推荐的代码随想录这个网站也蛮好的...最近在看他,发现他的分类也挺清晰的,里面每个知识点基本都有对照的讲解。 |
13
Poluk OP @apake 谢谢老哥,我目前大二,而且也是专科。其实 Java 基础语法(除线程并发之类的)已经学完一年多了,现在的情况就是着手学着基础,同时也学做 Spring Boot 相关项目。
CS61A ,SICP 确实好,但目前来说可能时间有点紧迫,如果我大一的视野能照到这样的课程就好了,大一基本都在学流行的赚钱的技术了。(哭) |
14
smallWang 2023-05-22 13:59:26 +08:00
@Poluk #13 建议趁早换掉 java 带专 java 在杭州 没人要,除非你 acm 牛逼,icpc 有奖之类的。目前看来带专人也只有 acm 、icpc 有出路了 诶 难崩 建议专升本。
|
15
smallWang 2023-05-22 14:09:17 +08:00
|
16
Poluk OP @smallWang #14 目前在南京上学,其实想在年轻的时候想看看杭州的机会,专升本肯定是一定要升的。只不过不想把升本的备考时间线拉太久这样会很累,而且我也不想暂时因为备考升本放弃技术的学习。
我确实也时常会有焦虑...但是也没办法,考虑太多只会更焦躁,倒不如趁着现在还有时间和有兴趣驱动静下心来多学点技术,而且我也有努力学再多的技术也不一定有工作的心理准备(包括升本之后去找工作的情况)。 ICPC 可能暂时没办法去搞了...也许升本之后可能有点机会?其实 ICPC 拿牌子的人找工作也只是相对好找一些而已,个人努力在这种大环境下显得微不足道,这也是没办法的事,我觉得普通人的出路其实相对来说真的很少很少。 Java 岗位多也卷,但是转其他的话也就只剩目前呈上升趋势的 Go ,但是相对 Java 来说 Go 语言岗位更少吧? |
17
smallWang 2023-05-22 14:45:07 +08:00
@Poluk 南京不清楚 杭州 java 烂大街,你已经有职业规划的意识了,建议看看你想发展的城市 上 boss 瞅瞅,看看普遍的需求。
1. 焦虑是一直有的 我天天都焦虑呢,然后开摆,适当的焦虑是动力 过渡焦虑就要摆烂了。控制好自己的情绪 2. 算法怎么说呢,不用学的很深,你是必不可能卷到大厂里面去的,小厂天天写 curd 要个屁的算法,懂基本的就 ok ,因为应届生面试没有工作经验只能叭叭算法了。不用太精通,不过打打 acm 是好的,坏处是基本上时间都要投入在算法上了,后面图论啊、深搜剪枝啊、头疼死,学会了之后毕业出来 crud 你怎么想? icpc 没必要 除非你真的很牛逼,要震这么牛逼也不可能是带专人了。 3. 专升本一年能搞定,你就好好搞。 4. go 不太清楚 问问其他老哥或者看 boss 。 5. 职业规划慢慢来 不用很急,多看 boss ,多看看市场需要,不是看你会什么 而是看别人要什么,规划好了之后再去针对性的学习,比如要做后端,要了解 tcp 、http 的知识,java 后端和 go 后端大差不差,基本都是 mvc 之类的,这个看你自己选择了,我是后端,别的方向的我也不懂,问问其他大佬 6. 我觉得对于一个程序员、大学生来说,最重要的还是他的学习能力,可以在一定时间内上手一样东西、技术、算法 这个很重要,毕竟计算机的东西都是相同的,所以你不单单的是学 java 这门语言,而是这门语言背后的编程思维、面对对象、抽象思维等。 7. 不仅仅是数据结构 作为开发你还需要掌握 sql 、linux 基础。 |
18
Poluk OP @smallWang #17 其实我个人的期待并不想做一个简单的 CRUD 工程师哈哈哈哈,也许有点期望过高。不过这只是最终理想罢了。
像计算机基础我计算机网络已经学两遍了...Linux 基本的命令也会(后续打算重新学一遍并且实操一遍),sql 也需要重新学一遍。这不是最近学完数据结构,算法上有点迷茫了,学算法也仅仅是为了找工作用的并且提升思维能力的。 现在基础上也就是在学计算机组成原理看的是 CSAPP ,后续打算看操作系统。学这些也仅仅想让自己的内功修炼的更好一点,其次就是也在学一些 Boot 开源项目,所以时间有点紧迫哈哈哈哈。 其实随着认知和知识的增加,包括听周边人的建议,也会反复对自己现有的计划稍作修改。转 Go 其实没怎么想过,其实转一门语言再容易也只是相对的,也需要耗费时间包括了解这个语言的知识以及行情。 南京外包真的太多了...暂时不考虑毕业之后留在这里,目前的想法就是年轻的时候在杭州找找机会打拼打拼,在苏州立居。打算升本的这两年正好可以先避一避目前的不好的市场,正好可以观摩观摩,本科找个中小的地方实习一下,等毕业的时候看看市场会不会好过一些。 希望咱们都可以在前进过程中被多一点的幸运眷顾哈哈哈,其实抛开目前不好的市场,我觉得有一些东西还是值得向往的!加油捏! |
19
c2const 2023-05-22 15:40:01 +08:00 1
看完《算法》红书,工作中 99%的情况都够用了,面试前刷面试题就行了。
|
20
smallWang 2023-05-22 15:46:05 +08:00
@Poluk 不管干啥 赚钱是最终目的,你现在目光、规划挺好的,不像我大学自己摸爬滚打了 3 年,操作系统这种的,你是真打算把计算机基础学一遍啊? 叼叼叼,我是啥都没学,主打的就是一个临时抱佛脚。多实操多折腾,以后如果来杭州可以面基哈哈哈哈。
还有最重要的一门课 社会 等着你来学哦 |