首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
LeetCode 经典算法刷题
白菜说技术
创建于2022-08-31
订阅专栏
面试能力和你平时的工作能力其实差别挺大的。有些人技术挺厉害的,但没有刷题,一面二面都过不了,而某些小镇刷题家,还真就靠刷题拿下了 Google、微软、脸书等大厂offer。
等 8 人订阅
共17篇文章
创建于2022-08-31
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
LeetCode算法系列 46. 全排列
46. 全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。 在尝试了所有可能的分步方法后宣告该问题没有答案。 我们尝试在纸上写 3 个数字、4 个数字、5 个数字的全排列,相信不难找到这样的方法。以数组 [1, 2, 3] 的全排列为例。 先写以 1 开头的全排列…
LeetCode算法系列 47. 全排列 II
47. 全排列 II 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 这题是 46. 全排列 的延伸版本, 前置阅读推荐: LeetCode算法系列(Java版) 46. 全排列 全排列 的基础上增加了 序列中的元素可重复 这一条件,但要求:返回…
LeetCode算法系列 62. 不同路径
我们用 $f(i, j)$ 表示从左上角走到 $(i, j)$ 的路径数量,其中 $i$ 和 $j$ 的范围分别是 $[0, m)$ 和 $[0, n)$ 。
LeetCode算法系列 63. 不同路径 II
我们用 $f(i, j)$ 表示从左上角走到 $(i, j)$ 的路径数量,其中 $i$ 和 $j$ 的范围分别是 $[0, m)$ 和 $[0, n)$ 。
LeetCode算法系列 94. 二叉树的中序遍历
94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回它的 中序 遍历。 1. 前序遍历 2. 中序遍历 3. 后序遍历 4. 层次遍历 「层次遍历」就是按照每一层从左向右的方式进行遍历,遍历结果为 1 2 3 4 5 6 7。 二叉树的中序遍历:按照访问 左子树—…
LeetCode算法系列 96. 不同的二叉搜索树
96. 不同的二叉搜索树 给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 给定一个有序序列 $1 \cdots n$,为了构建出一棵二叉搜索树,我们可以遍历每个数字 $i$,将该数字作为树根,将 $1 \cdots (i-1)$ 序列作为左子树,将 $…
LeetCode算法系列 101. 对称二叉树
101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 如果一个树的左子树与右子树镜像对称,那么这个树是对称的。 显然,我们可以使用 递归实现。 比较左子树的右节点是否等于右子树的左节点。 两个根节点中至少有一个…
LeetCode算法系列 102. 二叉树的层序遍历
102. 二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 DFS(深度优先搜索)和 BFS(广度优先搜索)就像孪生兄弟,提到一个总是想起另一个。如果我们使用 DFS/BFS 只是为了遍历一棵树、一张图上的所有结点的…
LeetCode算法系列 104. 二叉树的最大深度
104. 二叉树的最大深度 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 返回它的最大深度 3 。 时间复杂度:$O(n)$,其中 $n$ 为二叉树的节点个数。与方法一同样的分析,每个节点只会…
LeetCode算法系列 105. 从前序与中序遍历序列构造二叉树
105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树。 你可以假设树中没有重复的元素。 二叉树相关的很多问题的解决思路都有分治法的思想在里面。 此时问题已经分治为几个小的相同的问题,显然能作为递归的结构去处理。 如何划分数组的界限,我们可以定义不同…
LeetCode算法系列 106. 从中序与后序遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树。 你可以假设树中没有重复的元素。 二叉树相关的很多问题的解决思路都有分治法的思想在里面。 此题解决问题的方式与LeetCode算法系列 105. 从前序与中序遍历序列构造二叉树类似。 此时问题已…
LeetCode算法系列 110. 平衡二叉树
110. 平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 根据定义,一棵二叉树是平衡二叉树,当且仅当其所有子树也都是平衡二叉树,因此可以使用递归的方式判断二叉树是不是平衡二叉树,递归的顺序可以是自顶向…
LeetCode算法系列 111. 二叉树的最小深度
111. 二叉树的最小深度 给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 时间复杂度:$O(N)$,其中 $N$ 是树的节点数。对每个节点访问一次。 空间复杂度:$O(N)$,其中 $N$ 是树…
LeetCode算法系列 144. 二叉树的前序遍历
144. 二叉树的前序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 1. 前序遍历 2. 中序遍历 3. 后序遍历 4. 层次遍历 「层次遍历」就是按照每一层从左向右的方式进行遍历,遍历结果为 1 2 3 4 5 6 7。 二叉树的前序遍历:按照访问 根节…
LeetCode算法系列 145. 二叉树的后序遍历
145. 二叉树的后序遍历 给定一个二叉树,返回它的 后序 遍历。 1. 前序遍历 2. 中序遍历 3. 后序遍历 4. 层次遍历 「层次遍历」就是按照每一层从左向右的方式进行遍历,遍历结果为 1 2 3 4 5 6 7。 二叉树的后序遍历:按照访问 左子树——右子树——根节点…
LeetCode算法系列 146. LRU 缓存机制
146. LRU 缓存机制 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关…
LeetCode算法系列 460. LFU 缓存机制
460. LFU 缓存机制 请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。 int get(int key) - 如果键存在于缓存中,则获取键的值,否则返回 -1。 void put(int key, int value) - 如果键已存在,则变更其值;如果键不存在…