前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >掌握这些核心算法,拿不到10+个offer你来找我,我锤飞你个不争气的

掌握这些核心算法,拿不到10+个offer你来找我,我锤飞你个不争气的

原创
作者头像
北游
修改于 2021-07-26 10:12:37
修改于 2021-07-26 10:12:37
4950
举报
文章被收录于专栏:一头扎进Java一头扎进Java

前言

不得不说现在算法岗的热门程度已经到了一个空前绝后的程度,所以这一岗位的就业形势也是非常严峻。

算法就像武侠小说里的内功,新手修得些许,并不如划拉兵器(编程语言)练几招华丽丽的招式(写代码)效果明显,也有的将它用于装X。

中等选手,习武多年,内外兼修,平稳能克敌,内力深浅的体现是融于招数之间的。

高级选手拼的就是内力了。这时候对他们来说兵器和招式已不大重要,所以高级的工程师、教授科研人员有时并不怎么写代码了,他们研究的是算法、系统级别的优化。

所以,少侠,来两斤算法吗?

来一起看看有哪些算法是一名程序员必须要掌握的。

一、算法基础

入门的同学,我建议你不要过度追求上去就看经典书。

不要一来就拿着《算法导论》开始啃,初学就去啃这些书肯定会很费劲。你一旦啃不下来,挫败感就会很强。

然后就放弃学算法了。

所以,入门的同学,我建议你找一些比较容易看的书来看,比如《大话数据结构》和《算法图解》。

不要太在意书写得深浅,重要的是能不能坚持看完。

坚持看完任意一本你都不会再恐惧算法了。

《大话数据结构》 这本书最大的特点是,它把理论讲得很有趣,不枯燥。而且每个数据结构和算法,作者都结合生活中的例子进行了讲解, 能让你有非常直观的感受。

示例丰富,图文并茂,这是一本像小说一样的算法入门书。

无论你是刚入门的菜鸟,还是需要重温算法的老鸟,这本书都是你不二的选择。这本书的电子档可以点击传送门获取。

二、基础数据结构

1、哈希表(必学)

  • 碰撞解决方法:开放定址法、链地址法、再次哈希法、建立公共溢出区(必学)
  • 布隆过滤器(原理与应用)

这块的话网上的博客和视频都挺多的,可以自己去找一些靠谱的学习一下。

2、树

  • 二叉树:各种遍历(递归与非递归)(必学)
  • 哈夫曼树与编码(原理与应用)
  • AVL树(必学)
  • B 树与 B+ 树(原理与应用)
  • 前缀树(原理与应用)
  • 红黑树(原理与应用)
  • 线段树(原理与应用)

树相关是知识还是挺多的,建议看书,可以看《算法第四版》

3、数组

  • 树状数组
  • 矩阵(必学)

树状数组其实我也没学过,,,,

这里给大家推荐一份刷题笔记,里面把各种算法题型以及经验都总结了,把这份笔记突击学习一下,很多算法考察,基本都稳了,给大家看一下目录

需要这份笔记的同学点击传送门即可领取。

4、栈与队列

  • 栈(必学)
  • 队列(必学)
  • 优先队列、堆(必学)
  • 多级反馈队列(原理与应用)

特别是优先队列,再刷题的时候,还是经常用到的,队列与栈,是最基本的数据结构,必学。可以通过博客来学习

5、线性表

  • 列表(必学)
  • 链表(必学)
  • 跳跃表(知道原理,应用,最后自己实现一遍)
  • 并查集(建议结合刷题学习)

不用说,链表、列表必须,不过重点是链表。

三、各种常见算法

1、图论算法

  • 图的表示:邻接矩阵和邻接表
  • 遍历算法:深度搜索和广度搜索(必学)
  • 最短路径算法:Floyd,Dijkstra(必学)
  • 最小生成树算法:Prim,Kruskal(必学)
  • 实际常用算法:关键路径、拓扑排序(原理与应用)
  • 二分图匹配:配对、匈牙利算法(原理与应用)
  • 拓展:中心性算法、社区发现算法(原理与应用)

图还是比较难的,不过我觉得图涉及到的挺多算法都是挺实用的,例如最短路径的计算等,图相关的,我这里还是建议看《算法第四版》。

2、十大排序算法

  • 简单排序:插入排序、选择排序、冒泡排序(必学)
  • 分治排序:快速排序、归并排序(必学,快速排序还要关注中轴的选取方式)
  • 分配排序:桶排序、基数排序
  • 树状排序:堆排序(必学)
  • 其他:计数排序(必学)、希尔排序

对于十大算法的学习,假如你不大懂的话,那么我还是挺推荐你去看书的,因为看了书,你可能不仅仅知道这个算法怎么写,还能知道他是怎么来的。推荐书籍是《算法第四版》,这本书讲的很详细,而且配了很多图演示,还是挺好懂的。

3、搜索与回溯算法

  • 贪心算法(必学)
  • 启发式搜索算法:A*寻路算法(了解)
  • 地图着色算法、N 皇后问题、最优加工顺序
  • 旅行商问题

这方便的只是都是一些算法相关的,我觉得如果可以,都学一下。像贪心算法的思想,就必须学的了。建议通过刷题来学习,leetcode 直接专题刷。

4、动态规划

  • 树形DP:01背包问题
  • 线性DP:最长公共子序列、最长公共子串
  • 区间DP:矩阵最大值(和以及积)
  • 数位DP:数字游戏
  • 状态压缩DP:旅行商

5、字符匹配算法

  • 正则表达式
  • 模式匹配:KMP、Boyer-Moore

6、流相关算法

  • 最大流:最短增广路、Dinic 算法
  • 最大流最小割:最大收益问题、方格取数问题
  • 最小费用最大流:最小费用路、消遣

小结

上面涉及到的算法可以不用很懂,但至少得了解。至于书籍的话,如果你连基本数据结构都还不懂的,建议看《数据结构与算法》相关书籍,例如《大话数据结构》、《数据结构与算法分析》。如果你有一定的基础,例如知道链表,栈,队列,那么可以看《算法第四版》,这本书是用 Java 实现的。

文中提到的书籍和笔记我都有收集整理电子书,需要的同学可以点击传送门即可获取整理好的所有资料哦。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。
帅地
2019/10/23
3.6K0
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过不错的文章给大家。大家也可以留言区补充。
乔戈里
2019/10/28
6310
ACM训练计划
看完人家的博客,发现任重道远。。。 一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。 下面给个计划你练练: 第一阶段: 练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码, 因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打 出来. 1.最短路(Floyd、Dijstra,BellmanFord) 2.最小生成树(先写个prim
Angel_Kitty
2018/04/08
1.7K0
适合普通大学生的 Java 后端开发学习路线
接下来的一段时间,帅地会总结各种技术栈的学习路线,例如 Java 开发,C++ 开发,python 开发,前端开发等等,假如你没有明确的目标,或许可以按照我说的学习路线来学习一波,我写的每一份学习路线,不会很全面,因为我认为,东西列的太多,反而不利于新手的学习,所以我列举的,都是比较必要的知识,当你把这些知识学了的时候,我相信你不需要别人的学习路线,也能知道自己接下来需要学啥了。
帅地
2021/04/14
6890
【读书笔记】《漫画算法》:克服对算法的恐惧,从漫画开始
在上小学和初高中的时候,要我写读后感这种东西,我是非常厌恶的。无非就是老师布置的一个作业,还是那种无趣且磨人的工作。
蛮三刀酱
2020/06/20
4530
微软程序员的算法心得
最近校招也热热闹闹展开了,有不少读者问我我那会是怎么刷题学算法的,介于这篇文章是去年写的,很多读者没看过,这次我就旧文重发一下,并做了相应修改,希望对大家有所帮助。
公众号袁厨的算法小屋
2022/09/20
4320
微软程序员的算法心得
该直接上《算法导论》 还是先看完 《算法 第四版》?
所以,入门的同学,我建议你找一些比较容易看的书来看,比如《大话数据结构》和《算法图解》。
五分钟学算法
2022/05/27
6310
【小白成长】这几年看过的优秀书籍介绍
版权声明:本文为苦逼的码农原创。未经同意禁止任何形式转载,特别是那些复制粘贴到别的平台的,否则,必定追究。欢迎大家多多转发,谢谢。
帅地
2019/06/06
7900
【小白成长】这几年看过的优秀书籍介绍
初学算法该直接上《算法导论》 还是先看完 《算法 第四版》?
不要一来就拿着《算法导论》开始啃,初学就去啃这些书肯定会很费劲。你一旦啃不下来,挫败感就会很强。
五分钟学算法
2020/02/20
1.7K0
Java 后端开发学习路线(修订版)
接下来的一段时间,帅地会总结各种技术栈的学习路线,假如你没有明确的目标,或许可以按照我说的学习路线来学习一波。
帅地
2022/01/13
2.9K0
Java 后端开发学习路线(修订版)
不论你是大众,科班和非科班,我这边整理很久,总结出的学习路线,还不快卷起来
很多人对自我的学习路线没有清楚的定位,鉴于此,我就来写一篇适合普通大众的学习路线,就从大一入学那一刻开始入门说起,虽然不一定适合你,但或许能给没有明确目标的人带来一些学习的方向,那么这篇文章,我就觉得值了。
用户10216580
2022/12/06
4830
《算法和数据结构》题海战术篇
大家好,又见面了,我是你们的朋友全栈君。 文章目录 1️⃣前言:追忆我的刷题经历 2️⃣算法和数据结构的重要性 👪1、适用人群 🎾2、有何作用 📜3、算法简介 🌲4、数据结构 3️⃣如何开始持续的刷题 📑1、立军令状 👩‍❤️‍👩2、培养兴趣 🚿3、狂切水题 💪🏻4、养成习惯 🈵5、一周出师 4️⃣简单数据结构的掌握 🚂1、数组 🎫2、字符串 🎇3、链表 🌝4、哈希表 👨‍👩‍👧5、队列 👩‍👩‍👦‍👦6、栈 🌵7、二叉树 🌳8、多叉树 🌲9、森林 🍀10、树状数组 🌍11、图 5️
全栈程序员站长
2022/09/05
3340
《算法和数据结构》题海战术篇
刷 leetcode 需要哪些基础?
姑且称他为老A吧。这里0基础指的是没学过编程语言,没学过数据结构和算法,一上来就直接做题那种。
凯哥Java
2022/12/16
1K0
写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』
说实话,对于学习路线这种文章我一般是不写的,大家看我的文章也知道,我是很少写建议别人怎么样怎么样的文章,更多的是,写自己的真实经历,然后供大家去参考,这样子,我内心也比较踏实,也不怕误导他人。
全栈程序员站长
2022/09/13
7201
写了很久,这是一份最适合/贴切普通大众/科班/非科班的『学习路线』
非算法工程师面试必问的算法面试理论 顶
数据结构是算法的基础。大家需要对数据结构有个清晰的概念,因为大部分的算法题均需要带入数据结构的概念来处理。科班出身的程序员或多或少学习过数据结构。我们推荐大家可以重温下这本书,温故而知新。
个推君
2019/12/24
4810
ACM竞赛学习指南(算法工程师成长计划)
算法工程师成长计划 近年来,算法行业异常火爆,算法工程师年薪一般20万~100 万。越来越多的人学习算法,甚至很多非专业的人也参加培训或者自学,想转到算法行业。尽管如此,算法工程师仍然面临100万的人才缺口。缺人、急需,算法工程师成为众多企业猎头争抢的对象。 计算机的终极是人工智能,而人工智能的核心是算法,算法已经渗透到了包括互联网、商业、金融业、航空、军事等各个社会领域。可以说,算法正在改变着这个世界。 下面说说如何成为一个算法工程师,万丈高楼平地起,尽管招聘启事的算法工程师都要求会机器学习,或数据挖
rainchxy
2018/09/13
4K0
一位算法工程师的自我修养
数据结构与算法 基本算法思想 动态规划 贪心算法 回溯算法 分治算法 枚举算法 算法基础 时间复杂度 空间复杂度 最大复杂度 平均复杂度 基础数据结构 数组 动态数组 树状数组 矩阵 栈与队列 栈 队列 阻塞队列 并发队列 双端队列 优先队列 堆 多级反馈队列 线性表 顺序表 链表 单链表 双向链表 循环链表 双向循环链表 跳跃表 并查集 哈希表(散列表) 散列函数 碰撞解决办法: 开放地址法 链地址法 再次哈希法 建立公共溢出区 布隆过滤器 位图 动态扩容 树 二叉树: 各种遍历,递归与非递归 二
攻城狮Chova
2022/01/22
4810
再谈ACM训练计划及题号总结归纳
为学弟学妹们指明一条训练之路~~~帮助他们刷题有方QAQ(之前好像也有总结过,可能你们找找我博客,说不定能找到~~~) OJ上的一些水题(可用来练手和增加自信) (poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: 一.基本算法:        (1)枚举. (poj1753,poj2965)      (2)贪心(poj1328,poj2109,poj2586)      (3)递归和分治
Angel_Kitty
2018/04/10
1.3K0
前端必备javascript书籍测评【含红宝书和绿皮书】
大家好,我是大圣,今天给大家带来期待已久的javascript书籍测评,工作者9年多看过的js书大部分都在这了,会分成这几个部分来推荐
若川
2020/10/10
3.8K0
前端必备javascript书籍测评【含红宝书和绿皮书】
转行了!
微信上收到一个读者的私信,他正在一所 985 高校读研,专业是机械工程,想转行做软件开发,问我该选择 C++ 还是 Java?
沉默王二
2021/11/16
6150
转行了!
推荐阅读
相关推荐
程序员必须掌握的算法有哪些?谈谈这这几年学过的算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档