LeetCode Hot 100

热门 100 题,高频面试算法题目

100 道题目

中等

68

道题目

简单

20

道题目

困难

12

道题目

中等 (68 题)

字母异位词分组

将一组字符串按字母异位词分组。

哈希
查看详情

最长连续序列

找出未排序数组中的最长连续序列,要求时间复杂度为 O(n)。

哈希
查看详情

盛最多水的容器

给定一个数组,表示容器两侧的高度,找出能盛最多水的容器。

双指针
查看详情

三数之和

找出数组中所有和为零的三元组。

双指针
查看详情

无重复字符的最长子串

找出字符串中无重复字符的最长子串长度。

滑动窗口
查看详情

找到字符串中所有字母异位词

在字符串 s 中找到所有与字符串 p 异位词的子串的起始索引。

滑动窗口
查看详情

和为 K 的子数组

找到数组中和为 K 的连续子数组的个数。

子串
查看详情

最大子数组和

找到数组中连续子数组的最大和。

普通数组
查看详情

合并区间

给定一组区间,合并所有重叠的区间。

普通数组
查看详情

轮转数组

将数组向右轮转 k 次。

普通数组
查看详情

除自身以外数组的乘积

给定一个数组,返回一个数组,输出每个元素的值为原数组中除了自身以外元素的乘积。

普通数组
查看详情

矩阵置零

给定一个 m x n 的矩阵,如果某个元素为 0,则将其所在行和列全部置为 0。

矩阵
查看详情

旋转图像

将 n x n 的矩阵顺时针旋转 90 度。

矩阵
查看详情

螺旋矩阵

以螺旋顺序返回矩阵中的所有元素。

矩阵
查看详情

搜索二维矩阵 II

在一个二维矩阵中查找一个目标值,该矩阵的每行和每列都按升序排列。

矩阵
查看详情

环形链表 II

找到链表中环的起点。

链表
查看详情

两数相加

两个非空链表分别表示两个非负整数,按位相加。

链表
查看详情

删除链表的倒数第 N 个结点

删除链表中倒数第 N 个节点。

链表
查看详情

两两交换链表中的节点

交换链表中每两个相邻的节点。

链表
查看详情

随机链表的复制

复制一个带随机指针的链表。

链表
查看详情

排序链表

对链表进行排序。

链表
查看详情

LRU 缓存

实现一个 LRU 缓存机制。

链表
查看详情

二叉树的层序遍历

按层序遍历方式输出二叉树的节点值。

二叉树
查看详情

验证二叉搜索树

判断一个二叉树是否是有效的二叉搜索树。

二叉树
查看详情

二叉树展开为链表

将二叉树展开为单链表,按前序遍历顺序。

二叉树
查看详情

二叉树的右视图

从右侧查看二叉树,返回每层的最右节点值。

二叉树
查看详情

二叉搜索树中第 K 小的元素

找出二叉搜索树中第 K 小的元素。

二叉树
查看详情

从前序与中序遍历序列构造二叉树

根据前序和中序遍历结果构造二叉树。

二叉树
查看详情

路径总和 III

计算二叉树中路径和等于目标值的路径数量。

二叉树
查看详情

二叉树的最近公共祖先

找出二叉树中两个节点的最近公共祖先。

二叉树
查看详情

岛屿数量

计算二维网格中岛屿的数量。

图论
查看详情

腐烂的橘子

计算腐烂的橘子使所有新鲜橘子腐烂所需的时间。

图论
查看详情

课程表

判断是否可以完成所有课程(有向图是否有环)。

图论
查看详情

实现 Trie (前缀树)

实现一个 Trie,用于存储和搜索字符串前缀。

图论
查看详情

全排列

给定一个不含重复数字的数组,返回其所有可能的排列。

回溯
查看详情

子集

给定一个数组,返回所有可能的子集(幂集)。

回溯
查看详情

电话号码的字母组合

给定数字字符串,返回对应的字母组合。

回溯
查看详情

括号生成

给定一个数字 n,生成所有合法的括号组合。

回溯
查看详情

组合总和

找到所有和为目标值的数字组合,数字可重复使用。

回溯
查看详情

单词搜索

判断二维网格中是否存在一个单词的路径。

回溯
查看详情

搜索二维矩阵

在一个二维矩阵中查找一个目标值,矩阵的每行和每列按升序排列。

二分查找
查看详情

分割回文串

将字符串分割为多个子串,使每个子串都是回文。

回溯
查看详情

搜索旋转排序数组

在旋转排序数组中查找目标值。

二分查找
查看详情

寻找旋转排序数组中的最小值

在旋转排序数组中找到最小值。

二分查找
查看详情

在排序数组中查找元素的第一个和最后一个位置

在排序数组中找到目标值的起始和结束位置。

二分查找
查看详情

最小栈

设计一个支持常数时间内获取最小值的栈。

查看详情

字符串解码

解码形如 '3[a2[c]]' 的嵌套字符串。

查看详情

每日温度

计算每一天需要等几天才能出现更高的温度。

查看详情

数组中的第K个最大元素

找到数组中第 K 个最大的元素。

查看详情

前 K 个高频元素

找出数组中出现频率最高的 K 个元素。

查看详情

跳跃游戏 II

计算跳到数组终点的最小跳跃次数。

贪心算法
查看详情

跳跃游戏

判断是否可以从数组起点跳到终点。

贪心算法
查看详情

划分字母区间

将字符串划分为尽可能多的片段,每个片段中的字母只能出现在该片段中。

贪心算法
查看详情

打家劫舍

计算数组中不相邻元素的最大和。

动态规划
查看详情

完全平方数

计算数字 n 最少可以由几个完全平方数相加得到。

动态规划
查看详情

零钱兑换

计算兑换金额的最少硬币数。

动态规划
查看详情

单词拆分

判断字符串能否拆分成字典中的单词。

动态规划
查看详情

最长递增子序列

找到数组中最长递增子序列的长度。

动态规划
查看详情

乘积最大子数组

找到数组中连续子数组的最大乘积。

动态规划
查看详情

分割等和子集

判断数组能否分割为两个和相等的子集。

动态规划
查看详情

不同路径

计算机器人从网格左上角到右下角的不同路径数。

多维动态规划
查看详情

最小路径和

计算网格从左上角到右下角的路径最小和。

多维动态规划
查看详情

最长回文子串

找到字符串中的最长回文子串。

多维动态规划
查看详情

编辑距离

计算将一个字符串转换为另一个字符串的最少操作数。

多维动态规划
查看详情

颜色分类

对数组进行排序,使得 0、1、2 分别排在数组的左、中、右部分。

技巧
查看详情

最长公共子序列

找到两个字符串的最长公共子序列。

多维动态规划
查看详情

下一个排列

找到数字序列的下一个字典序排列。

技巧
查看详情

寻找重复数

找到数组中重复的数字,数组长度为 n+1,数字范围为 [1,n]。

技巧
查看详情

简单 (20 题)

两数之和

给定一个整数数组 nums 和一个目标值 target,找出数组中和为目标值的两个数。

哈希
查看详情

移动零

将数组中的零移动到末尾,同时保持非零元素的相对顺序。

双指针
查看详情

反转链表

反转一个单链表。

链表
查看详情

相交链表

找到两个链表的交点。

链表
查看详情

回文链表

判断链表是否是回文链表。

链表
查看详情

环形链表

判断链表是否有环。

链表
查看详情

合并两个有序链表

将两个升序链表合并为一个升序链表。

链表
查看详情

二叉树的中序遍历

以中序遍历方式输出二叉树的节点值。

二叉树
查看详情

二叉树的最大深度

计算二叉树的最大深度。

二叉树
查看详情

翻转二叉树

翻转二叉树的左右子树。

二叉树
查看详情

二叉树的直径

计算二叉树的直径(最长路径节点数减 1)。

二叉树
查看详情

对称二叉树

判断二叉树是否对称。

二叉树
查看详情

将有序数组转换为二叉搜索树

将一个升序数组转换为高度平衡的二叉搜索树。

二叉树
查看详情

搜索插入位置

在排序数组中找到目标值的插入位置。

二分查找
查看详情

有效的括号

判断字符串中的括号是否匹配。

查看详情

买卖股票的最佳时机

找到一次买卖股票的最大利润。

贪心算法
查看详情

杨辉三角

生成杨辉三角的前 n 行。

动态规划
查看详情

爬楼梯

计算爬楼梯的不同方法数,每次可以爬 1 或 2 阶。

动态规划
查看详情

只出现一次的数字

找到数组中只出现一次的数字,其余数字均出现两次。

技巧
查看详情

多数元素

找到数组中出现次数超过半数的元素。

技巧
查看详情

困难 (12 题)

接雨水

计算给定高度数组中能接住的雨水总量。

双指针
查看详情

最小覆盖子串

给定字符串 s 和 t,找到 s 中最短的子串,使得该子串包含 t 中所有字符。

子串
查看详情

滑动窗口最大值

给定一个数组和窗口大小 k,找出每个窗口的最大值。

子串
查看详情

缺失的第一个正数

找到未排序数组中缺失的第一个正数。

普通数组
查看详情

K 个一组翻转链表

每 K 个节点翻转一次链表。

链表
查看详情

合并 K 个升序链表

将 K 个升序链表合并为一个升序链表。

链表
查看详情

二叉树中的最大路径和

找到二叉树中的最大路径和。

二叉树
查看详情

N 皇后

在 n x n 的棋盘上摆放 n 个皇后,使其不能互相攻击。

回溯
查看详情

寻找两个正序数组的中位数

找到两个排序数组的中位数。

二分查找
查看详情

柱状图中最大的矩形

找到柱状图中能够围成的最大矩形面积。

查看详情

数据流的中位数

给定一个数据流,随时可以获取中位数。

查看详情

最长有效括号

找到字符串中最长有效括号的长度。

动态规划
查看详情