LeetCode刷题分类-解题模式
模式1:如果是已经排好序的序列(数组,链表,或是矩阵),我们就可以用二分的变种或是双指针策略
模式2: 如果我们需要处理n个元素中:顶部/最大/最小/最接近的k个元素时,我们就可以用堆来解决了。
模式3:如果我们需要找出给定输入所有的组合(或是排列)的话,那我们要么可以用递归的回溯法,或是迭代的BFS来解决了。
模式4:大多数树和图相关的问题,能用BFS或是DFS解
模式5:每一个递归的答案,其实都可以转化成一个迭代解,但需要借助于栈。
模式6:如果某个问题存在O(n2)的时间和O(1)空间的暴力解,那么它肯定存在以下两种解决方案:1)用Map或是Set来实现O(n)时间和O(n)空间的复杂度方案,2)用排序来实现O(nlogn)的时间和O(1)空间
模式7:如果一个题目需要优化(无论是最大化还是最小化),我们就需要借助于动态规划来解了。
模式8:如果我们需要找两个字符串的公共子串,那我们就得用HashMap或是Trie结构了。
模式9:如果需要在一大堆字符串中查找,那无疑Trie是最好的数据结构了。
模式10:如果题目涉及到链表,然后我们还不能使用额外的空间,那快慢指针肯定是需要的解法了。
0