最佳实践问题 标题:最佳实践问题 副标题:作者盲人75的精选问题 描述:作者为盲人75编写的准备算法编码面试的最佳实践问题列表,分布在为期5周的计划中 关键词:[算法,编码,面试,问题,力扣,盲人75] 显示侧边栏:文档 分页下一页:编码面试速查表
导入算法课程
import AlgorithmCourses from './_courses/AlgorithmCourses.md'
导入内联广告
import InDocAd from './_components/InDocAd';
:::提示
截至2022年4月,我已经开发了一个12周学习计划,其中包括复习和实践问题的课程。如果你想要自定义自己的实践问题,我还开发了Grind 75,这是一个现代版的盲人75,你可以进行自定义。
:::
嘿,盲人75的作者在这里!
练习是准备编码面试的最佳方法。力扣上有超过一千个问题。你应该练习哪些问题呢?多年前,我从力扣上提取了最重要的75个问题,制作了一个列表。许多其他力扣问题都是这些个别问题的技术的混合体。在我的上一份工作中,我使用这个列表来只做重要的问题。
我在Blind上分享了这份列表,通过从我的freeCodeCamp文章中提取问题,以节省人们在复习时的时间,有人将这个列表在力扣论坛上重新发布。不知何故,它突然爆红,并在编码面试领域变得非常著名,人们甚至给它起了一个名字——盲人75。作为力扣列表的盲人75问题可以在这里找到这里。
几年后,我将这个列表进一步精简为只有50个问题,并将它们分布在5周的时间表中。以下是建议的在力扣上复习和实践算法问题的时间表。如果你还没有账户,请注册一个,这对于你的面试成功至关重要!
在练习时,建议你像对待真正的编码面试一样仔细检查并提交。甚至可以手动想出一些测试用例并运行它们来验证正确性!
我为以下问题创建了一个力扣列表(除了高级问题)。你可以使用它来跟踪你的练习进度。
:::专家提示
如果你时间紧张,AlgoMonster旨在帮助你在尽可能短的时间内掌握技术面试。由谷歌工程师开发的AlgoMonster采用数据驱动的方法教授你最常用的关键问题模式,并提供帮助你快速复习基本数据结构和算法的内容。学会理解和应用模式,而不是死记硬背答案!
:::
第一周 - 序列
在第一周,我们将通过做一些简单和中等难度的数组和字符串问题来热身。数组和字符串是面试中最常见的题型;熟悉它们将有助于建立强大的基础知识,从而更好地处理更困难的问题。
问题 | 难度 | 力扣 |
---|---|---|
两数之和 | 简单 | 链接 |
包含重复元素 | 简单 | 链接 |
最佳买卖股票时机 | 简单 | 链接 |
有效的字母异位词 | 简单 | 链接 |
有效的括号 | 简单 | 链接 |
最长连续子数组 | 简单 | 链接 |
数组除自身以外的乘积 | 中级 | 链接 |
三数之和 | 中级 | 链接 |
合并区间 | 中级 | 链接 |
字母异位词分组 | 中级 | 链接 |
可选
问题 | 难度 | 力扣 |
---|---|---|
最大乘积子数组 | 中级 | 链接 |
在旋转排序数组中查找 | 中级 | 链接 |
第二周 - 数据结构
第二周的重点是链表、字符串和基于矩阵的问题。目标是学习处理链表的常见程序、遍历矩阵以及序列分析(数组/字符串)技术,如滑动窗口、链表遍历和矩阵遍历。
问题 | 难度 | 力扣 |
---|---|---|
反转链表 | 简单 | 链接 |
检测链表中的循环 | 简单 | 链接 |
容器中最大水量 | 中级 | 链接 |
在旋转排序数组中找到最小值 | 中级 | 链接 |
长度重复字符替换 | 中级 | 链接 |
不含重复字符的最长子串 | 中级 | 链接 |
岛屿数量 | 中等 | 链接 |
删除链表中倒数第N个节点 | 中等 | 链接 |
回文子串 | 中等 | 链接 |
太平洋和大西洋的水流 | 中等 | 链接 |
最小窗口子字符串 | 困难 | 链接 |
第三周 - 非线性数据结构
第三周的重点是非线性数据结构,如树、图和堆。你应该熟悉各种树遍历算法(中序、前序、后序)和图遍历算法,如广度优先搜索和深度优先搜索。根据我的经验,使用更高级的图算法(迪杰斯特拉和弗洛伊德-沃沙尔)是非常罕见的,通常没有必要。
问题 | 难度 | LeetCode |
---|---|---|
倒置/翻转二叉树 | 简单 | 链接 |
验证二叉搜索树 | 中等 | 链接 |
无重叠区间 | 中等 | 链接 |
构建由先序和中序遍历生成的二叉树 | 中等 | 链接 |
最高频元素 | 中等 | 链接 |
克隆图 | 中等 | 链接 |
课程表 | 中等 | 链接 |
序列化和反序列化二叉树 | 困难 | 链接 |
二叉树最大路径和 | 困难 | 链接 |
可选
问题 | 难度 | LeetCode |
---|---|---|
二叉树的最大深度 | 简单 | 链接 |
同一棵树 | 简单 | 链接 |
二叉树层序遍历 | 中等 | 链接 |
编码和解码字符串 | 中等 | 链接 (高级) |
第四周 - 更多的数据结构
第四周在前三周的知识基础上进行了扩展,但问题的难度有所提高。预计面试中会遇到类似水平的题目。你会在更高级的数据结构上进行更多练习,例如(但不限于)堆和尝试,这些数据结构不太常见,但仍然会被问到。
问题 | 难度 | LeetCode |
---|---|---|
树的子树 | 简单 | 链接 |
二叉搜索树的最低公共祖先 | 简单 | 链接 |
实现前缀树(Trie) | 中等 | 链接 |
添加和搜索单词 | 中等 | 链接 |
二叉搜索树中的第K个最小元素 | 中等 | 链接 |
合并K个有序链表 | 困难 | 链接 |
从数据流中找到中位数 | 困难 | 链接 |
插入区间 | 中等 | 链接 |
最长连续序列 | 中等 | 链接 |
词搜索II | 困难 | 链接 |
可选
问题 | 难度 | LeetCode |
---|---|---|
会议房间 | 简单 | 链接 (高级) |
会议房间II | 中等 | 链接 (高级) |
图的有效树 | 中等 | 链接 (高级) |
无向图中连通分量的数量 | 中等 | 链接 (高级) |
外星字典 | 困难 | 链接 (高级) |
第五周 - 动态规划
第五周专注于动态规划(DP)问题。就我个人而言,作为面试官,我不喜欢DP问题,因为它们并不适用于实际场景,而且说实话,如果我在面试中不得不解决那些棘手的DP问题,我可能就不会得到这份工作。然而,像谷歌这样的公司仍然会问DP问题,如果你梦想加入谷歌,DP是不可避免的。
DP问题可能很难掌握,最好的提高方法就是……你猜对了——实践!熟悉记忆化和回溯的概念。
实际上,学习和练习DP问题的投资回报(ROI)非常低。因此,DP问题不太重要/可选,除非你有时间余裕,并且非常热衷于全面覆盖(以及准备面试谷歌)。
问题 | 难度 | LeetCode |
---|---|---|
攀登楼梯 | 简单 | 链接 |
硬币找零 | 中等 | 链接 |
最长递增子序列 | 中等 | 链接 |
组合总和 | 中等 | 链接 |
抢劫银行 | 中等 | 链接 |
抢劫银行II | 中等 | 链接 |
解码方式 | 中等 | 链接 |
唯一路径 | 中等 | 链接 |
跳跃游戏 | 中等 | 链接 |
词拆分 | 中等 | 链接 |