内附例题|不要只是 LeetCode,而是要遵循编码模式

首先,让我们来看看 LeetCode 的问题所在。

我收集了大约 20 种这样的编码问题模式,我相信它们可以帮助任何人学习这些漂亮的算法技术,并在编码面试中发挥真正的作用。

【参考文献】

文章:Don’t Just LeetCode; Follow the Coding Patterns Instead

作者:Arslan Ahmad

上述译文仅供参考,具体内容请查看上面链接,解释权归原作者所有。

系统设计面试准备:掌握系统设计的艺术。

编码面试越来越难。要准备编码面试,需要数周甚至数月的准备时间。

没有人喜欢花那么多时间准备编码面试。那么,有没有更聪明的解决方案呢?

准备编码面试的人肯定都知道 LeetCode。它可能是最大的在线编码面试问题库。让我们来看看人们在使用 LeetCode 时会遇到哪些问题。

LeetCode 的问题

LeetCode 中大约有 3k 个问题。LeetCode 面临的最大挑战是缺乏条理;它有一大堆编码问题,让人不知从何入手,也不知道该关注哪些问题。

人们不禁要问,是否有足够数量的问题可以让人认为自己为编码面试做好了准备?

我希望能有一个简化的流程来指导我,教给我足够的算法技巧,让我对面试充满信心。作为一个懒惰的人,我可不想去回答 500 多个问题。

解决方案

人们经常使用的一种技巧是解决与相同数据结构相关的问题;例如,先集中解决与数组相关的问题,然后再解决与链接表、哈希表、堆、树、图或 Trie 等相关的问题。虽然这确实提供了一些条理性,但仍然缺乏连贯性。例如,许多问题可以用 HashMap 解决,但仍然需要不同的算法技术。

我希望看到不仅数据结构相同,而且算法技术相似的问题集。

我接触到的最好的东西是解决问题的模式,如Sliding Window, Fast and Slow Pointers, Two Pointers, Two Heaps, Topological Sort(滑动窗口、快慢指针、双指针、双堆、拓扑排序等。遵循这些模式有助于培养我 "将新问题映射到已知问题 "的能力。这不仅让整个编码-面试-准备过程变得有趣,也让我的工作变得更有条理。

编码模式增强了我们 “将新问题映射到已知问题的能力”。

编码模式

我收集了大约 20 种这样的编码问题模式,我相信它们可以帮助任何人学习这些漂亮的算法技术,并在编码面试中发挥真正的作用。

这些模式背后的理念是,一旦你熟悉了一种模式,你就能用它解决数十种问题。有关这些模式的详细讨论以及相关问题的解决方案,请参阅《Grokking the Coding Interview》。

所以,话不多说,让我把这些模式一一列举出来(每种模式的小介绍,并附有例题:)

1、Sliding Window 滑动窗口

内附例题|不要只是 LeetCode,而是要遵循编码模式_第1张图片

2、Islands (Matrix Traversal) 岛屿(矩阵遍历)

内附例题|不要只是 LeetCode,而是要遵循编码模式_第2张图片

3、Two Pointers 双指针

内附例题|不要只是 LeetCode,而是要遵循编码模式_第3张图片

4、Fast & Slow Pointers 快慢指针

内附例题|不要只是 LeetCode,而是要遵循编码模式_第4张图片

5、Merge Intervals 合并区间

内附例题|不要只是 LeetCode,而是要遵循编码模式_第5张图片

6、Cyclic Sort 循环排序

内附例题|不要只是 LeetCode,而是要遵循编码模式_第6张图片

7、In-place Reversal of a LinkedList 链表的原地反转

内附例题|不要只是 LeetCode,而是要遵循编码模式_第7张图片

8、Tree Breadth-First Search 树的广度优先搜索

内附例题|不要只是 LeetCode,而是要遵循编码模式_第8张图片

9、Tree Depth First Search 树的深度优先搜索

内附例题|不要只是 LeetCode,而是要遵循编码模式_第9张图片

10、Two Heaps 双堆

内附例题|不要只是 LeetCode,而是要遵循编码模式_第10张图片

11、Subsets 子集

内附例题|不要只是 LeetCode,而是要遵循编码模式_第11张图片

12、Modified Binary Search 改进的二进制搜索

内附例题|不要只是 LeetCode,而是要遵循编码模式_第12张图片

13、Bitwise XOR 位运算异或

内附例题|不要只是 LeetCode,而是要遵循编码模式_第13张图片

14、Top ‘K’ Elements 顶级“K”元素

内附例题|不要只是 LeetCode,而是要遵循编码模式_第14张图片

15、K-way Merge K-way 合并

内附例题|不要只是 LeetCode,而是要遵循编码模式_第15张图片

16、Topological Sort 拓扑排序

内附例题|不要只是 LeetCode,而是要遵循编码模式_第16张图片

17、0/1 Knapsack 0/1背包问题

内附例题|不要只是 LeetCode,而是要遵循编码模式_第17张图片

18、Fibonacci Numbers 斐波那契数列

内附例题|不要只是 LeetCode,而是要遵循编码模式_第18张图片

19、Palindromic Subsequence 回文子序列

内附例题|不要只是 LeetCode,而是要遵循编码模式_第19张图片

20、Longest Common Substring 最长公共子串

内附例题|不要只是 LeetCode,而是要遵循编码模式_第20张图片

结论
不管你喜不喜欢,LeetCode 类型的问题几乎是每个编程面试的一部分,因此每个软件开发人员都应该在面试前练习这些问题。他们唯一的选择就是聪明地做好准备,通过关注基本的问题模式来学习解决问题。了解有关这些模式和示例问题的更多信息,请参阅《Grokking the Coding Interview》和《Grokking Dynamic Programming for Coding Interviews》。

请查看 Design Gurus,了解有关编码和系统设计面试的有趣课程。

///end///

⚠️:文章翻译上如有语法不准确或者内容纰漏,欢迎各位评论区指正。

【关于TalkX】

TalkX是一款基于GPT实现的IDE智能开发插件,专注于编程领域,是开发者在日常编码中提高编码效率及质量的辅助工具,TalkX常用的功能包括但不限于:解释代码、中英翻译、性能检查、安全检查、样式检查、优化并改进、提高可读性、清理代码、生成测试用例以及有趣的图表转账等。

TalkX建立了全球加速网络,不需要考虑网络环境,响应速度快,界面效果和交互体验更流畅。并为用户提供了OpenAI的密钥,不需要ApiKey,不需要自备账号,不需要魔法。

TalkX产品支持:JetBrains (包括 IntelliJ IDEA、PyCharm、WebStorm、Android Studio)、HBuilder、VS Code、Goland.

你可能感兴趣的:(实用干货分享,leetcode,linux,算法)