LeetCode 75
精选 75 题,涵盖核心算法和数据结构
共 75 道题目
难度分布
简单 (22 题)
交替合并字符串
将两个字符串交替合并成一个字符串,依次取两个字符串中的字符,直到其中一个字符串耗尽。
数组 / 字符串字符串的最大公因子
找到两个字符串的最大公因子,即可以作为两个字符串的重复子串的最长字符串。
数组 / 字符串拥有最多糖果的孩子
给定每个孩子的糖果数和额外增加的糖果数,判断哪些孩子可以拥有最多的糖果。
数组 / 字符串种花问题
判断是否可以在某些位置种下指定数量的花,种花规则是不能种在相邻位置。
数组 / 字符串反转字符串中的元音字母
反转字符串中的元音字母,其他字符保持原样。
数组 / 字符串移动零
将数组中的所有零移动到末尾,同时保持非零元素的相对顺序。
双指针判断子序列
判断一个字符串是否为另一个字符串的子序列。
双指针子数组最大平均数 I
找到长度为 k 的子数组的最大平均数。
滑动窗口找到最高海拔
根据海拔变化数组,找到最高的海拔。
前缀和寻找数组的中心下标
找到一个下标,使得其左右两边的元素和相等。
前缀和找出两数组的不同
找出两个数组中不同的元素集合。
哈希表 / 哈希集合独一无二的出现次数
判断数组中每个数字的出现次数是否都唯一。
哈希表 / 哈希集合最近的请求次数
统计最近时间范围内的请求次数。
队列二叉树的最大深度
计算二叉树的最大深度。
二叉树 - 深度优先搜索叶子相似的树
判断两棵树的叶子节点序列是否相同。
二叉树 - 深度优先搜索反转链表
反转单链表,返回反转后的链表头节点。
链表二叉搜索树中的搜索
在二叉搜索树中搜索目标值,返回对应节点。
二叉搜索树猜数字大小
通过二分查找猜测目标数字。
二分查找第 N 个泰波那契数
计算第 N 个泰波那契数。
动态规划 - 一维使用最小花费爬楼梯
计算爬楼梯的最小花费。
动态规划 - 一维比特位计数
计算每个数字的二进制表示中1的个数。
位运算只出现一次的数字
找到数组中唯一出现一次的数字。
位运算中等 (53 题)
反转字符串中的单词
反转字符串中的所有单词,但保持单词内部字符顺序不变。
数组 / 字符串除自身以外数组的乘积
返回一个数组,其中每个元素是原数组中其他元素的乘积。
数组 / 字符串压缩字符串
压缩字符串,将连续重复的字符替换为字符加重复次数。
数组 / 字符串递增的三元子序列
判断数组中是否存在递增的三元子序列。
数组 / 字符串盛最多水的容器
找出两个柱子形成的容器中最多能盛的水量。
双指针K 和数对的最大数目
找出数组中和为 K 的数对的最大数量。
双指针定长子串中元音的最大数目
找到固定长度子串中元音字母的最大个数。
滑动窗口最大连续1的个数 III
最多允许 k 次翻转,将数组中连续的 1 的最大长度求出。
滑动窗口删掉一个元素以后全为 1 的最长子数组
删掉一个元素后,找到最长的连续 1 的子数组长度。
滑动窗口确定两个字符串是否接近
判断两个字符串是否可以通过交换字符或频率调整后相等。
哈希表 / 哈希集合相等行列对
统计矩阵中行和列完全相同的配对数量。
哈希表 / 哈希集合从字符串中移除星号
移除字符串中的星号,星号会移除其左侧的字符。
栈小行星碰撞
模拟小行星碰撞,返回最终状态。
栈字符串解码
解码嵌套格式的字符串,如 '3[a2[b]]'。
栈奇偶链表
调整链表顺序,使奇数索引节点在前,偶数索引节点在后。
链表删除链表的中间节点
删除链表的中间节点,返回修改后的链表。
链表Dota2 参议院
模拟参议院的决策过程,判断最终赢家。
队列链表最大孪生和
找到链表中对称节点的最大和。
链表统计二叉树中好节点的数目
统计二叉树中值大于等于路径中最大值的节点数量。
二叉树 - 深度优先搜索二叉树中的最长交错路径
找到二叉树中最长的交错路径。
二叉树 - 深度优先搜索路径总和 III
找到二叉树中路径和为目标值的路径数量。
二叉树 - 深度优先搜索二叉树的右视图
返回二叉树的右视图,即每层最右侧的节点。
二叉树 - 广度优先搜索二叉树的最近公共祖先
找到二叉树中两个节点的最近公共祖先。
二叉树 - 深度优先搜索最大层内元素和
找到二叉树中每层节点值的最大和。
二叉树 - 广度优先搜索删除二叉搜索树中的节点
删除二叉搜索树中的指定节点,调整树结构。
二叉搜索树钥匙和房间
判断是否可以访问所有房间。
图 - 深度优先搜索省份数量
计算图中连通分量的数量,表示省份数量。
图 - 深度优先搜索重新规划路线
调整图中的边方向,使所有节点连通。
图 - 深度优先搜索除法求值
计算除法表达式的结果,给定变量之间的关系。
图 - 深度优先搜索迷宫中离入口最近的出口
找到迷宫中离入口最近的出口位置。
图 - 广度优先搜索腐烂的橘子
计算腐烂橘子扩散到所有新鲜橘子所需的时间。
图 - 广度优先搜索数组中的第K个最大元素
找到数组中第K大的元素。
堆 / 优先队列无限集中的最小数字
维护一个无限集合,支持取出最小数字和添加数字。
堆 / 优先队列雇佣 K 位工人的总代价
选择 K 位工人,使得雇佣成本最小。
堆 / 优先队列最大子序列的分数
找到一个子序列,使得分数最大化。
堆 / 优先队列咒语和药水的成功对数
计算咒语和药水的组合中满足条件的对数。
二分查找爱吃香蕉的珂珂
找到最小速度使得珂珂能在限定时间内吃完香蕉。
二分查找寻找峰值
找到数组中的峰值元素。
二分查找电话号码的字母组合
根据数字键盘映射生成所有可能的字母组合。
回溯组合总和 III
找到所有和为目标值的固定长度组合。
回溯打家劫舍
计算可以偷窃的最大金额,不能偷相邻的房屋。
动态规划 - 一维最长公共子序列
找到两个字符串的最长公共子序列。
动态规划 - 多维不同路径
计算从网格左上角到右下角的不同路径数量。
动态规划 - 多维编辑距离
计算将一个字符串转换为另一个字符串的最小操作次数。
动态规划 - 多维买卖股票的最佳时机含手续费
找到最大利润,考虑交易手续费。
动态规划 - 多维多米诺和托米诺平铺
计算平铺方式的总数。
动态规划 - 一维或运算的最小翻转次数
计算将两个数字通过翻转变为目标值的最小次数。
位运算实现 Trie (前缀树)
实现一个支持插入、搜索和前缀匹配的前缀树。
前缀树搜索推荐系统
根据输入的前缀返回推荐的单词列表。
前缀树无重叠区间
移除最少数量的区间使剩余区间互不重叠。
区间集合每日温度
计算每个日期需要等待多少天才能看到更高的温度。
单调栈用最少数量的箭引爆气球
计算射爆所有气球所需的最少箭数。
区间集合股票价格跨度
计算每个日期股票价格连续上涨的天数。
单调栈