没有合适的资源?快使用搜索试试~ 我知道了~
LeetCode 101:和你一起你轻松刷题(C++版)
需积分: 1 1 下载量 71 浏览量
2024-02-19
12:28:57
上传
评论
收藏 3.56MB PDF 举报
温馨提示
试读
149页
本书分为算法和数据结构两大部分,又细分了十五个章节,详细讲解了刷 LeetCode 时常用 的技巧。 本书以 C++ 作为编程语言。 本书题目精简到了 101 道,主要是不想让读者阅读和练习时间过长。掌握这 101 道题,读者就可以对算法和数据结构的掌握有比较扎实的认知,可大幅提升个人在职场上的竞争力。
资源推荐
资源详情
资源评论
LeetCode 101:和你一起你轻松刷题(C++)
LeetCode 101: A LeetCode Grinding Guide (C++ Version)
作者:高畅 Chang Gao
版本:正式版 1.08
一个面向有 C++ 编程基础,但缺乏刷题经验的读者的教科书和工具书。
序
在 2018 年这个奇妙的秋天,我前往美国卡内基梅隆大学攻读硕士项目。为了准备实习秋招,
我从夏天就开始整理 LeetCode 的题目;经过几个月的刷题,我也整理了几百道题,但是缺少系
统性的归纳和总结。时隔一年,我于 2019 年秋季在 GitHub 上用 Markdown 做了一个初步的总结,
按照算法和数据结构进行分类,整理了差不多 200 道题,用于自己在面试前查漏补缺。然而,在
这个简单的总结里,每道题只有简单的题目描述和题解代码,并没有详细的解释说明。除了我之
外的其他人很难读懂代码的思路。
有了刷题的积累和不错的运气,我很快就在毕业前找到了工作。当时我的一位朋友对我开玩
笑说,你刷了这么多题,却在找到工作后停止了面试,是不是有点亏啊。我笑了笑,心想我并不
是会这么做的人;但是的确,刷了这么多题却没有派上太多用场。2019 年冬季毕业后,我宅在家
里做着入职前的准备,同时刷着魔兽世界的坐骑成就。不知怎的,我突然萌生了一个念想,既然
我刷了这么多题,也有了初步的总结,不如把它们好好地归纳总结一下,做一个便于他人阅读和
学习的电子书。Bang! Here comes the book.
本书分为算法和数据结构两大部分,又细分了十五个章节,详细讲解了刷 LeetCode 时常用
的技巧。我把题目精简到了 101 道,一是呼应了本书的标题,二是不想让读者阅读和练习时间过
长。这么做不太好的一点是,如果只练习这 101 道题,读者可能对算法和数据结构的掌握不够扎
实。因此在每一章节的末尾,我都加上了一些推荐的练习题,并给出了一些解法提示,希望读者
在理解每一章节后把练习题也完成。如果本书反响热烈,我也会后续加上他们的题解。
本书以 C++ 作为编程语言。对于 Java 用户,绝大部分的算法和数据结构都可以找到对应的
写法,语法上也只需要小修改。对于 Python 等其它用户,由于语法差别略大,这本书可能并不会
特别适合你。由于本书的目的不是学习 C++ 语言,因此行文时我不会过多解释语法细节,而且会
适当使用一些 C++11 或更新的语法。截止于 2019 年年末,所有的书内代码在 LeetCode 上都是可
以正常运行的,并且在保持易读的基础上,几乎都是最快或最省空间的解法。
请注意,刷题只是提高面试乃至工作能力的一小部分。在计算机科学的海洋里,值得探索的
东西太多,并不建议您花过多时间刷题。并且要成为一个优秀的计算机科学家,刷题只是入职的
敲门砖,提高各种专业技能、打好专业基础、以及了解最新的专业方向或许更加重要。
由于本书的目的是分享和教学,因此本书永久免费,也禁止任何营利性利用。欢迎学术目的
的分享和传阅。由于我不对 LeetCode 的任何题目拥有版权,一切题目版权以 LeetCode 官方为准。
感谢 GitHub 用户 CyC2018 的 LeetCode 题解,它对于我早期的整理起到了很大的帮助作用。
感谢 ElegantBook 提供的精美 L
A
T
E
X 模版,使得我可以轻松地把 Markdown 笔记变成看起来更专
业的电子书。另外,书的封面图片是我于 2019 年元月,在尼亚加拉大瀑布的加拿大侧拍摄的风
景;在此感谢海澄兄同我一起旅行拍照。
鸣谢名单
GitHub 用户:quweikoala、szlghl1、mag1cianag、woodpenker、yangCoder96、cluckl、shaoshuai-luo、
KivenGood、alicegong、hitYunhongXu
目 录
1 题目分类 1
2 最易懂的贪心算法 3
2.1 算法解释 . . . . . . . . . . . . . 3
2.2 分配问题 . . . . . . . . . . . . . 3
2.3 区间问题 . . . . . . . . . . . . . 5
2.4 练习 . . . . . . . . . . . . . . . . 6
3 玩转双指针 8
3.1 算法解释 . . . . . . . . . . . . . 8
3.2 Two Sum . . . . . . . . . . . . . 9
3.3 归并两个有序数组 . . . . . . . . 10
3.4 快慢指针 . . . . . . . . . . . . . 10
3.5 滑动窗口 . . . . . . . . . . . . . 11
3.6 练习 . . . . . . . . . . . . . . . . 13
4 居合斩!二分查找 14
4.1 算法解释 . . . . . . . . . . . . . 14
4.2 求开方 . . . . . . . . . . . . . . 14
4.3 查找区间 . . . . . . . . . . . . . 15
4.4 旋转数组查找数字 . . . . . . . . 17
4.5 练习 . . . . . . . . . . . . . . . . 18
5 千奇百怪的排序算法 19
5.1 常用排序算法 . . . . . . . . . . 19
5.2 快速选择 . . . . . . . . . . . . . 21
5.3 桶排序 . . . . . . . . . . . . . . 22
5.4
练习
. . . . . . . . . . . . . . . . 23
6 一切皆可搜索 24
6.1 算法解释 . . . . . . . . . . . . . 24
6.2 深度优先搜索 . . . . . . . . . . 24
6.3 回溯法 . . . . . . . . . . . . . . 29
6.4 广度优先搜索 . . . . . . . . . . 34
6.5 练习 . . . . . . . . . . . . . . . . 38
7 深入浅出动态规划 40
7.1 算法解释 . . . . . . . . . . . . . 40
7.2 基本动态规划:一维 . . . . . . 40
7.3 基本动态规划:二维 . . . . . . 43
7.4 分割类型题 . . . . . . . . . . . . 47
7.5 子序列问题 . . . . . . . . . . . . 49
7.6 背包问题 . . . . . . . . . . . . . 51
7.7 字符串编辑 . . . . . . . . . . . . 57
7.8 股票交易 . . . . . . . . . . . . . 59
7.9 练习 . . . . . . . . . . . . . . . . 62
8 化繁为简的分治法 64
8.1 算法解释 . . . . . . . . . . . . . 64
8.2 表达式问题 . . . . . . . . . . . . 64
8.3 练习 . . . . . . . . . . . . . . . . 66
9 巧解数学问题 67
9.1 引言 . . . . . . . . . . . . . . . . 67
9.2 公倍数与公因数 . . . . . . . . . 67
9.3 质数 . . . . . . . . . . . . . . . . 67
9.4 数字处理 . . . . . . . . . . . . . 69
9.5 随机与取样 . . . . . . . . . . . . 71
9.6 练习 . . . . . . . . . . . . . . . . 74
10 神奇的位运算 76
10.1 常用技巧 . . . . . . . . . . . . . 76
10.2 位运算基础问题 . . . . . . . . . 76
10.3 二进制特性 . . . . . . . . . . . . 78
10.4 练习 . . . . . . . . . . . . . . . . 80
11 妙用数据结构 81
11.1 C++ STL . . . . . . . . . . . . . 81
11.2 数组 . . . . . . . . . . . . . . . . 82
11.3 栈和队列 . . . . . . . . . . . . . 85
11.4 单调栈 . . . . . . . . . . . . . . 88
11.5 优先队列 . . . . . . . . . . . . . 89
11.6 双端队列 . . . . . . . . . . . . . 93
11.7 哈希表 . . . . . . . . . . . . . . 94
11.8 多重集合和映射 . . . . . . . . . 98
11.9 前缀和与积分图 . . . . . . . . . 99
11.10练习 . . . . . . . . . . . . . . . . 102
剩余148页未读,继续阅读
资源评论
猴叻鳢
- 粉丝: 598
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功