/leetcode-train

main using ruby

Primary LanguageC#

leetcode 练习

力扣学习计划

算法

二分查找

  • 704
  • 278
  • 35

双指针

  • 977
  • 189
  • 283
  • 167
  • 344
  • 557

编程能力

基本数据类型

  • 1523
  • 1491

运算符

  • 191
  • 1281

条件语句

  • 976
  • 1779

循环

  • 1822
  • 1502
  • 202
  • 1790

数据结构入门

数组

  • 217
  • 53
  • 1
  • 88
  • 566
  • 118

一些经典算法

LRU

  • 146 LRU 缓存算法:双向链表 + 字典

AABB 碰撞检测

  • 836 矩形重叠,AABB 碰撞检测
  • 223 矩形面积

数据结构

  • 146 LRU 缓存算法:双向链表 + 字典
  • 235/236 LCA 最近公共祖先
  • 460 LFU 缓存算法:双向链表
  • 239 滑动窗口最大值 单调队列

哈希表

  • 001 两数之和

并查集

LCA

模拟

从一个节点向上找,并且标记路径。从另一个节点也向上走,碰到标记,就是最近公共祖先

Tarjan

在深度遍历的同时,用并查集维护节点之间的关系,当访问到某一个查询点时,如果另一个点已经被访问过了,那么查找他所在并查集的顶点就是最近公共祖先。适合多组查询的时候。

图论

最短路

dijkstra

核心就是使用优先队列来维护,保证每次从当前已知的最短路径进行扩展

  • 822 dijkstra

数论

  • 1979 gcd 找出数组的最大公约数: 最大公约数,辗转相除法

动态规划

  • 813 最大平均值和的分组
  • 121 买卖股票的最佳时机
  • 1687 从仓库到码头运输箱子 动态规划+单调队列优化

01背包

  • 1774 最接近目标价格的甜点成本

算法

二分查找

https://segmentfault.com/a/1190000016825704

  • 704 最基本的二份
  • 035
  • 278

字符串相关

  • 028 KMP 字符串匹配

一些参考资源网站