GithubHelp home page GithubHelp logo

leetcode-primer's Introduction

leetcode-primer

数据结构

  1. 单链表/双链表(快慢指针)

  2. 二叉树

  3. stack/单调stack/双stack/(在线性时间内找到每个元素的上一个或者下一个更大或更小元素)

  4. queue/双端deque/单调deque/priority_queue(单调队列通常用于解决滑动窗口问题,其中我们需要在滑动窗口内找到最大值或最小值)

  5. 哈希unorderer_map/unordered_set

  6. 平衡二叉树map/multimap/set/multimap

  7. 前缀、后缀、左边和右边、一维和二维

  8. 差分

  9. 树状数组

  10. 线段树(区间修改/区间add,求区间合、最值,区间内可以聚合的值)

  11. trie树

  12. 字符串匹配

  13. 并查集

  14. 高级数据结构实现

  15. 离线query

基本算法

  1. 二分算法 (lower_bound,map.lower_bound,check 二分答案)

  2. 滑动窗口/双指针

  3. 排序算法/top k/select kth

  4. 枚举

  5. 分组/循环 (group/cycle arrray) - 按照题目要求,数组会被分割成若干组,且每一组的判断/处理逻辑是一样的

  6. 分组

  7. 简单但易错题:

  8. 贪心

数学

  1. 数论问题

  2. 模运算

    • (a + b) mod c = ((a mod c) + (b mod c)) mod c
    • (a * b) mod c = ((a mod c) * (b mod c)) mod c
    • (a / b) mod c = (a * (b^(-1))) mod c,其中 b^(-1) 是 b 的乘法逆元。如果 c 是一个素数,且 b 是不可被 c 整除的整数,那么 b 的乘法逆元(b模c的逆元)可以通过以下方式计算:b^(-1) ≡ b^(c-2) (mod c)
    • 2842. 统计一个字符串的 k 子序列美丽值最大的数目
    • 乘法逆元,扩展欧几里得算法
    • 费马定理
  3. 位运算

  4. 拒绝抽样(rejection sampling)

  5. 水塘抽样

  6. 洗牌算法

  7. 快速幂

  8. 排列组合数学取模(大数取模)

  9. 容斥原理

  10. 区间合并

  11. 几何运算(距离:距离、欧式距离、曼哈顿距离、切比雪夫距离)

搜索问题

  1. BFS

  2. DFS/剪枝/回溯(深度搜索+限制条件+限制搜索路径)

  3. 启发式搜索

    • 八数码问题

DP问题(递推类DP)

  1. 线性 DP (包括状态机DP,序列DP,子问题有一个端点是固定不变的)

    1. 线性DP

    2. 状态机DP(关键是设计状态以及状态转移方程,之后在处理边界条件)

      • 打家劫舍(1.普通、2.环形、3.树形DP、4.DP+二分)
      • 将三个数组的排序
      • 买卖股票的最大利润(最多一次买卖、最多两次、最多K次、无限次买卖、冷冻期1天、手续费)
    3. 序列DP (序列DP是动态规划中的一种常见形式,通常用于解决一些关于序列的问题,比如最长递增子序列、编辑距离等)

    4. 数组DP dp[i][j]

    5. DP回溯 (很多时候只是求DP最值,但有时需要回溯DP的过程)

    6. 网格,矩阵DP

  2. 背包 DP

  3. 区间 DP (子问题向内缩小,两端都会向内移动)

  4. bitmask,状压 和 状态压缩DP,bitmask vs map+vector (把集合用二进制表示,二进制mask 1<<n)

  5. 树形 DP (子树天然地形成子问题,需要考虑dp的信息是怎么从子树传给上面的子树的,记忆化搜索,递归。就是我们已经知道以uuu为根的答案,想要通过u−>v的父子关系把答案传递)

    1. 定根DP,一次扫描
    2. 换根DP,二次扫描法
  6. 数位 DP (dfs(int i,int state,bool is_limit,bool is_num)

  7. 数据结构优化DP

  8. 倍增和倍增优化DP

  9. 矩阵快速幂优化DP

  10. 记忆化搜索 (动态规划,状态优化,求方案数量)

树/图论

  1. 最短路径和K短问题

  2. 拓扑排序和度

  3. 最小生成树

  4. 基环树、内向树、外向树

  5. 欧拉回路/通路

  6. 图的连通性

  7. 寻找符合条件的路径

  8. 二分图问题

  9. 网络流

参考

leetcode-primer's People

Contributors

wxquare avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.