前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >想搞定算法,看这个就够了 | 极客时间

想搞定算法,看这个就够了 | 极客时间

作者头像
深度学习与Python
发布2023-03-29 14:21:48
4500
发布2023-03-29 14:21:48
举报

你好,我是王健伟。拥有二十多年软件开发经验,今天想和大家聊聊学习数据结构与算法(C++ 版)的那点事。

工作中我们经常听到一些高大上的词汇,比如架构、微服务、大数据、云计算等等,却往往忽略了作为一个软件开发人员最基础的编程能力。

所以你经常会看到一些工作了 3-5 年的 C++ 开发工程师,乱写、乱抄、或者乱改代码,程序执行效率极其低下甚至崩溃;就算不是你写的,接手这样的代码,也一定是件让人抓狂的事。甚至你还会发现,每到跳槽涨薪求职季,刷了不少题,但是面对面试官的提问和新的题目,总是没有思路......

说白了,就是基本功出了问题。这也是为什么很多人在工作一段时间后,反而回去补算法这些专业课知识。从功利角度,大厂必考你必学;从长久角度,算法将决定你的技术上限

1 我这 20 余年学习数据结构与算法的感悟

我认为,学算法最重要的不是学习这个算法本身或者刷题目,而是要学习这类算法具体的设计过程。我将大家常见的问题归结为两类:基础、时间

第一个问题:都说这部分知识是内功,且要吃透,可是何为内功?何为吃透?

有人把学习数据结构与算法比喻为练内功,但我不赞成这样的说法。程序员真正的内功其实是解决复杂问题的全局把控能力、以及细节实现能力

吃透这个词也挺有意思。学习知识的过程是反复迭代、不断沉淀的过程,不要想试图一下子掌握所有。轻装上阵,先做到大而全也不是什么坏事

第二个问题:怎么分配系统学习和刷题的时间呢?

若准备去某个大厂应聘某个算法岗,系统学习后,有目的地到 LeetCode 上去刷;

反之,直接去系统学习一门课就好。时间对于软件开发工程师非常珍贵,千万不要大手大脚的占用大量时间去学习太多没必要的知识。

网络上的学习资料充斥着过多不必要的应用,扰乱思路。说到底,我们更需要的是有趣、系统、且正确的干货。因此,我萌生了在极客时间写个《快速上手 C++ 数据结构与算法》专栏的想法。为你提供完整、详实的概念细节,完整且能编译能运行的 C++ 代码,完全不必要再参考任何其他资料,就可以把重点内容理解清楚、到位。

40+ 经典数据结构与算法一网打尽,从 0 到 1 算法优化逻辑精讲,带你手撕优质代码,轻松搞定算法面试、刷题、学习三大难关。

限时优惠活动

定价 ¥199|老用户 7 折新用户 3 折

↓↓↓点击海报免费试读↓↓↓

2 我是谁?

我是王健伟,中国首套网络安全在线扫描评估系统项目负责人,全球同服独立游戏《冒险之路》制作人。

从 2018 年开始,我先后发布了 7 门 C++ 语言视频课程、和清华大学出版社合作先后出版了五本《C++ 新经典系列书籍。在排行榜中基本都处于最前列位置,帮助许多同学取得了国内外大型公司的 Offer。

讲话风趣幽默,善于用最简单的语言,把很复杂的事情表述的非常清楚。

我的学友们如是说。同样,学习完此专栏,我坚信在数据结构与算法方向,你的认知一定能超越九成的技术人员,给工作选择增加更多可能性。

3 与市面上的算法课有什么不同?

  1. 思路先行:提供多种情况下的不同思路,易懂、易查询;
  2. 精准切入,剖析面试难点:在准备春招、跳槽前刷一遍,再按算法分类系统的刷题,那么在算法面试环节和面试官谈笑风生不成问题;
  3. 提升实战技能:算法结合工程实践在专栏中很常见,比如“B+ 树在 MySQL 数据库中的应用”章节、回溯、动态规划算法、A* 算法、洪水填充算法等;
  4. 面向人群:专为算法基础薄弱,3-5 年 C++ 开发工程师。

4 我是如何讲解这门课的?

删繁就简,顺其自然,不仅是我设计课程的思路,更是咱们后续学习的基调。我们一起回归最基础的概念,写出最优质的代码

不论你是否已经具备了一定的基础,接下来,就让我们放平心态,先来梳理下在每个模块的学习目标到底是什么。

1. 预习篇

我会讲解算法的时间复杂度和空间复杂度的概念,和你一起逐步完成编程环境的搭建工作。

2. 线性表

学习任何知识都要由浅入深,由易到难。线性表会是我们这门课程讲解的第一个数据结构,和其它结构相比,它更简单直接、好理解,从代码实现上也最容易。

3. 树形结构

它是算法面试、实际开发中最常出现的数据结构。想要写出正确且更高效的程序代码,就要打牢这部分基础。

4. 图

图是比树形结构更复杂的数据结构。如果说树形结构的应用往往体现在程序编写中,那么对图的应用往往更接地气,更体现在实际生活中。

5.排序

排序算法经典、实用且在面试中最常出现。排序算法有十数种,每种排序算法的适用场合、时间以及空间复杂度、稳定性等各不相同,明白了这部分的内容,即可轻松搞定面试。

6. 字符串

字符串这种数据结构常见且应用广泛。有些面试官非常喜欢考 KMP 模式匹配算法实现的子串查找,重要性就不言而喻了。

7. 跳表与哈希

表跳表与哈希表这两种数据结构都非常实用且有趣味性。引入这两个话题,一是为了丰富你的眼界和开发思路,以备在日后的开发中随时采用,二来也是避免不了的老调重弹——为了应付面试的需要。

8. 进阶篇

我把一些难度相对大,在面试中出现频率没那么高的内容放入到了进阶篇中。这部分内容理解即可。

可以说,这门课给了你去 LeetCode 等网站刷题之前应该具备的各种理论和实践知识。我会先详细讲解一个数据结构或一个算法的概念和思路,在你充分理解后,再把这些思路通过代码的方式实现出来,整个过程会更简单、顺理成章。

详细内容,可以看看目录👇

最后再强调一点

金三银四求职突围季

原价 ¥199

今日限时秒杀到手 ¥119

如果你是新人,立享 3 折,只需 ¥68

在学习的过程中,一定会碰到“拦路虎”。如果哪个知识点没有怎么学懂,不要着急,这是正常的。学习知识的过程是反复迭代、不断沉淀的过程。所谓,书读百遍其义自见,我觉得是很有道理的!

如果在学习数据结构和算法的过程中,遇到过什么样的困难或者疑惑,欢迎留言分享,我会第一时间给你反馈。

点击阅读原文,这次,跟着我彻底拿下数据结构与算法!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档