内附例题|不要只是 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 滑动窗口

图1

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

图2

3、Two Pointers 双指针

图3

4、Fast & Slow Pointers 快慢指针

图4

5、Merge Intervals 合并区间

图5

6、Cyclic Sort 循环排序

图6

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

图7

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

图8

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

图9

10、Two Heaps 双堆

图10

11、Subsets 子集

图11

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

图12

13、Bitwise XOR 位运算异或

图13

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

图14

15、K-way Merge K-way 合并

图15

16、Topological Sort 拓扑排序

图16

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

图17

18、Fibonacci Numbers 斐波那契数列

图18

19、Palindromic Subsequence 回文子序列

图19

20、Longest Common Substring 最长公共子串

图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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值