zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    分治
    递归
    java三大特性之封装
    Java基础知识
    puk2367 拓扑排序
    puk1251 最小生成树
    puk1521 赫夫曼树编码
    DOSbox简单运行操作
    Mybatis初学经验----------------(2)
    mysql存储引擎MyISAM和InnoDB的区别
  • 原文地址:https://www.cnblogs.com/youngao/p/11990390.html
Copyright © 2011-2022 走看看