Leetcode 刷题目录

本文为按照labuladong算法小结 自行学习的总结。意为记录自己学习练习的顺序,用于日后回顾浏览。目录中附上各章labuladong的原文链接,并会附上自我练习的代码及理解。

1、数据结构

1.1、链表

1.1.1、单链表的六大解题套路

1、合并两个有序链表:Leetcode 21.合并两个有序链表merge-two-sorted-lists合并链表

2、合并K个有序链表:Leetcode 23. 合并K个升序链表merge-k-sorted-lists(合并k路有序链表 最小堆)

3、寻找单链表的倒数第K个节点: Leetcode 19.删除链表的倒数第 N 个结点 remove-nth-node-from-end-of-list(链表,快慢指针变种应用)

4、寻找单链表的中点:Leetcode 876. 链表的中间结点

5、判断单链表是否包含环并找出环起点:Leetcode 41. 环形链表(简单)linked-list-cycle——链表、判断是否循环链表、快慢指针、 Leetcode 142. 环形链表 II(中等)linked-list-cycle-ii——链表,找出开始循环节点

6、判断两个单链表是否相交并找出交点:Leetcode 160.相交链表

1.1.2、递归反转链表的一部分

1、反转链表,递归反转链表,反转链表前n,反转链表的一部分:Leetcode [92][206]. 反转链表ii&i-输入一个链表,反转链表后,输出链表的所有元素

1.1.3、如何 K 个一组反转链表

1、Leetcode 25. K 个一组反转链表

1.1.4、如何判断回文链表

1、原始思路

2、进阶思路Leetcode [234] 回文链表 回文 链表

1.1.5、个人补充

 1.2、二叉树

1.2.1、纲领篇

介绍二叉树前中后序遍历的基本框架和解题思路:Leetcode 104. 二叉树的最大深度、 Leetcode 543. 二叉树的直径 diameter-of-binary-tree

1.2.2、二叉树一

1.2.3、二叉树二

1.2.4、二叉树三

1.2.5、二叉搜索树一

1.2.6、二叉搜索树二

1.2.7、二叉搜索树三

1.2.8、美团面试题:二叉树的后续遍历巧妙应用

1.2.9、二叉树的序列化

1.2.10、二叉树叶子结点遍历

1.2.11、二叉树最近公共祖先LCA

1.2.12、完全二叉树的节点

1.2.13、二叉树的迭代框架

1.3、图算法

1.3.1、图论基础

1.3.2、拓扑排序

1.3.3、二分图判定

1.3.4、并查集原理并查集应用

1.3.5、Kruskal最小生成树

1.3.6、名流问题

1.3.7、Dijkstra算法

1.4、数据结构

1.4.1、LRU

1.4.2、LFU

1.4.3、前缀树/字典树

  • hold on

1.4.4、最大频率栈

1.4.5、数据流中求中位数

1.4.6、设计 Twitter:合并 k 个有序链表和面向对象设计

1.4.7、单调栈

1.4.8、单调队列

1.4.9、堆排序与优先级队列实现

1.4.10、用栈实现队列以及用队列实现栈

  • 内容:栈实现队列:用双栈,当需要pop时,从s1将数据逐个压入s2,那么s2栈顶元素就是需要出队列的元素
  • 队列实现栈:单个队列,用一个额外变量记录栈顶值。当出栈时,从队列中取出size-1个元素重新放入队列,那么倒数第二个元素就是栈顶,记录一下,倒数第一个元素就是需要出栈元素

1.5、数组题目

1.5.1、前缀和数组

1.5.2、差分数组

1.5.3、循环遍历二维数组

1.5.4、双指针技巧

1.5.5、滑动窗口算法

1.5.6、二分查找

1.5.7、二分查找高级应用

1.5.8、二分查找高级应用二

1.5.9、田忌赛马策略应用

1.5.10、常数时间进行删除、查找元素

1.5.11、带权重的随机选择算法

1.5.12、数组去重

1.5.13、原地去除有序数组的重复元素

1.5.14、twoSUM问题

  • hold on

2、动态规划

2.1、动态规划基本技巧

2.1.1、动态规划解题核心框架

2.1.2、动态规划设计-数学归纳思想

2.1.3、最优子结构原理和dp数组遍历方向

  • 内容:在理论上讲解了数组遍历方向,都是理论

2.1.4、base case和备忘录的初始值如何设置

2.1.5、状态压缩方法

  • 内容:介绍使用状态压缩方法降低空间复杂度,以最长回文子序列举例。可以最后再看

2.1.6、动态规划与回溯算法联系

2.2、子序列问题

2.2.1、编辑距离

2.2.2、最长递增子序列

2.2.3、二维递增子序列:信封嵌套问题

2.2.4、最大子数组

2.2.5、最长公共子序列

2.2.6、子序列问题模板

2.3、背包问题

2.3.1、0-1背包

  • 内容:背包问题通用模板,dp[i][j]表示对于前i种物品,j的容量可以获得的最大价值

2.3.2、子集背包问题

2.3.3、完全背包问题

2.4、动态规划玩游戏-走各种地图路径

2.4.1、动态规划之最小路径和

2.4.2、地下城游戏

2.4.3、动态规划帮我通关了《辐射4》(跳过)

2.4.4、加权最小路径

2.4.5、经典动态规划:正则表达式

2.4.6、经典动态规划:高楼扔鸡蛋 高楼扔鸡蛋进阶

2.4.7、经典动态规划:戳气球

2.4.8、经典动态规划:博弈问题

2.4.9、经典动态规划:四键键盘

2.4.10、一个方法团灭 LEETCODE 打家劫舍问题

2.4.11、一个方法团灭 LEETCODE 股票买卖问题

2.4.12、有限状态机之 KMP 字符匹配算法

  • 内容:跳过

2.4.13、构造回文的最小插入次数

2.5、贪心类型问题

2.5.1、贪心算法之区间调度问题

2.5.2、扫描线技巧:安排会议室

2.5.3、剪视频剪出一个贪心算法

2.5.4、如何运用贪心思想玩跳跃游戏

2.5.5、贪心算法之环形加油站能否走一周

3、常用算法技巧

3.1、暴力搜索算法

3.1.1、回溯算法解题套路框架

3.1.2、经典回溯算法:集合划分问题

3.1.3、一文秒杀所有排列/组合/子集问题

3.1.4、回溯算法最佳实践:解数独

3.1.5、岛屿问题

4、经典题目

posted @ 2022-02-07 15:51  鸭子船长  阅读(92)  评论(0编辑  收藏  举报