
LeetCode 经典面试 150 题
文章平均质量分 85
Dream it possible!
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 面试经典 150_哈希表_最长连续序列(47_128_C++_中等)
LeetCode 面试经典 150_哈希表_最长连续序列(47_128_C++_中等)题目描述:给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。原创 2025-10-10 15:07:44 · 410 阅读 · 0 评论 -
LeetCode 面试经典 150_哈希表_存在重复元素 II(46_219_C++_简单)
LeetCode 面试经典 150_哈希表_存在重复元素 II(46_219_C++_简单)题目描述:给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。原创 2025-10-09 21:15:31 · 694 阅读 · 0 评论 -
LeetCode 面试经典 150_哈希表_快乐数(45_202_C++_简单)(哈希集合;快慢指针)
LeetCode 面试经典 150_哈希表_快乐数(45_202_C++_简单)题目描述:编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为: - 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 - 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 - 如果这个过程 结果为 1,那么这个数就是快乐数。如果 n 是 快乐数 就返回 true ;不是,则返回 false 。原创 2025-09-26 23:12:34 · 365 阅读 · 0 评论 -
LeetCode 面试经典 150_哈希表_两数之和(44_1_C++_简单)
LeetCode 面试经典 150_哈希表_两数之和(44_1_C++_简单)题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。原创 2025-09-22 22:15:57 · 886 阅读 · 0 评论 -
LeetCode 面试经典 150_哈希表_字母异位词分组(43_49_C++_简单)
LeetCode 面试经典 150_哈希表_字母异位词分组(43_49_C++_简单)题目描述:给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。原创 2025-09-20 22:45:56 · 671 阅读 · 0 评论 -
LeetCode 面试经典 150_哈希表_有效的字母异位词(42_242_C++_简单)
LeetCode 面试经典 150_哈希表_有效的字母异位词(42_242_C++_简单)题目描述:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词。原创 2025-09-19 22:32:07 · 422 阅读 · 0 评论 -
LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单)
LeetCode 面试经典 150_哈希表_单词规律(41_290_C++_简单) 题目描述:给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。原创 2025-09-17 23:02:11 · 406 阅读 · 0 评论 -
LeetCode 面试经典 150_哈希表_同构字符串(40_205_C++_简单)
LeetCode 面试经典 150_哈希表_同构字符串(40_205_C++_简单)题目描述:给定两个字符串 s 和 t ,判断它们是否是同构的。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。原创 2025-09-16 21:17:59 · 921 阅读 · 0 评论 -
LeetCode 面试经典 150_矩阵_生命游戏(38_289_C++_中等)(额外状态)
LeetCode 面试经典 150_矩阵_生命游戏(38_289_C++_中等)题目描述:根据 百度百科 , 生命游戏 ,简称为 生命 ,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态: 1 即为 活细胞 (live),或 0 即为 死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:原创 2025-09-10 22:49:28 · 716 阅读 · 0 评论 -
LeetCode 面试经典 150_矩阵_矩阵置零(37_73_C++_中等)(哈希集合)(使用原二维数组记录置0信息)
LeetCode 面试经典 150_矩阵_矩阵置零(37_73_C++_中等)题目描述:给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。原创 2025-09-08 21:16:04 · 603 阅读 · 0 评论 -
LeetCode 面试经典 150_矩阵_旋转图像(36_48_C++_中等)(翻转)
LeetCode 面试经典 150_矩阵_旋转图像(36_48_C++_中等)题目描述:给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。原创 2025-09-06 22:53:23 · 962 阅读 · 0 评论 -
LeetCode 面试经典 150_矩阵_螺旋矩阵(35_54_C++_中等)(按层模拟)
LeetCode 面试经典 150_矩阵_螺旋矩阵(35_54_C++_中等)题目描述:给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。原创 2025-09-04 22:14:08 · 712 阅读 · 0 评论 -
LeetCode 面试经典 150_矩阵_有效的数独(34_36_C++_中等)(额外数组)
LeetCode 面试经典 150_矩阵_有效的数独(34_36_C++_中等)题目描述:请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 1. 数字 1-9 在每一行只能出现一次。 2. 数字 1-9 在每一列只能出现一次。 3. 数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。原创 2025-09-03 22:20:05 · 881 阅读 · 0 评论 -
LeetCode 面试经典 150_滑动窗口_最小覆盖子串(33_76_C++_困难)(滑动窗口)
LeetCode 面试经典 150_滑动窗口_最小覆盖子串(33_76_C++_困难)题目描述:给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。原创 2025-09-02 22:27:33 · 928 阅读 · 0 评论 -
LeetCode 面试经典 150_滑动窗口_串联所有单词的子串(32_30_C++_困难)(滑动窗口:控制起点和滑动距离)
LeetCode 面试经典 150_滑动窗口_串联所有单词的子串(32_30_C++_困难)题目描述:给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。例如,如果 words = ["ab","cd","ef"], 那么 "abcdef", "abefcd","cdabef", "cdefab","efabcd", 和 "efcdab" 都是串联子串。 "acdbef"原创 2025-09-01 22:46:34 · 1375 阅读 · 0 评论 -
LeetCode 面试经典 150_滑动窗口_无重复字符的最长子串(31_3_C++_中等)(滑动窗口)
LeetCode 面试经典 150_滑动窗口_无重复字符的最长子串(31_3_C++_中等)题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的**最长子串**的长度。原创 2025-08-29 23:20:00 · 466 阅读 · 0 评论 -
LeetCode 面试经典 150_滑动窗口_长度最小的子数组(30_209_C++_中等)(滑动窗口)
LeetCode 面试经典 150_滑动窗口_长度最小的子数组(30_209_C++_中等)题目描述:给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。原创 2025-08-29 23:12:32 · 312 阅读 · 0 评论 -
LeetCode 面试经典 150_双指针_三数之和(29_15_C++_中等)(三指针)
LeetCode 面试经典 150_双指针_三数之和(29_15_C++_中等)题目描述:给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。原创 2025-08-28 22:09:50 · 812 阅读 · 0 评论 -
LeetCode 面试经典 150_双指针_盛最多水的容器(28_11_C++_中等)(双指针)
LeetCode 面试经典 150_双指针_盛最多水的容器(28_11_C++_中等)题目描述:给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2025-08-28 21:40:29 · 538 阅读 · 0 评论 -
LeetCode 面试经典 150_双指针_两数之和 II - 输入有序数组(27_167_C++_中等)
LeetCode 面试经典 150_数组/字符串_两数之和 II - 输入有序数组(27_167_C++_中等)题目描述:给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] ,则 1 <= index1 < index2 <= numbers.length 。原创 2025-08-27 22:34:42 · 620 阅读 · 0 评论 -
LeetCode 面试经典 150_双指针_判断子序列(26_88_C++_简单)(双指针)
LeetCode 面试经典 150_双指针_判断子序列(26_88_C++_简单)题目描述:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。原创 2025-08-26 22:36:09 · 342 阅读 · 0 评论 -
LeetCode 面试经典 150_双指针_验证回文串(25_125_C++_简单)(双指针)
LeetCode 面试经典 150_数组/字符串_验证回文串(25_125_C++_简单)题目描述:如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。原创 2025-08-25 22:29:14 · 471 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_找出字符串中第一个匹配项的下标(23_28_C++_简单)(KMP 算法)
LeetCode 面试经典 150_数组/字符串_找出字符串中第一个匹配项的下标(23_28_C++_简单)题目描述:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。原创 2025-08-23 22:27:24 · 705 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_Z 字形变换(22_6_C++_中等)(直接构造)
LeetCode 面试经典 150_数组/字符串_Z 字形变换(22_6_C++_中等) 题目描述:将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下:原创 2025-08-18 23:00:44 · 880 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_反转字符串中的单词(21_151_C++_中等)(stringstream)
LeetCode 面试经典 150_数组/字符串_反转字符串中的单词(21_151_C++_中等)题目描述:给你一个字符串 s ,请你反转字符串中 单词 的顺序。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。原创 2025-08-16 22:18:57 · 597 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_最长公共前缀(20_14_C++_简单)(暴力破解)(求交集)
LeetCode 面试经典 150_数组/字符串_最长公共前缀(20_14_C++_简单)题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。原创 2025-08-15 22:05:03 · 374 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_最后一个单词的长度(19_58_C++_简单)(反向遍历)
LeetCode 面试经典 150_数组/字符串_最后一个单词的长度(19_58_C++_简单) 题目描述:给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。原创 2025-08-14 22:07:01 · 686 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_整数转罗马数字(18_12_C++_中等)(模拟)(对各位进行拆解)
LeetCode 面试经典 150_数组/字符串_整数转罗马数字(18_12_C++_中等)题目描述:七个不同的符号代表罗马数字,其值如下:I | 1;V | 5;X | 10;L | 50;C | 100 ;D | 500;M| 1000罗马数字是通过添加从最高到最低的小数位值的转换而形成的。将小数位值转换为罗马数字有以下规则:如果该值不是以 4 或 9 开头,请选择可以从输入中减去的最大值的符号,将该符号附加到结果,减去其值,然后将其余部分转换为罗马数字。原创 2025-08-13 23:10:25 · 847 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_罗马数字转整数(17_13_C++_简单)(哈希表)
LeetCode 面试经典 150_数组/字符串_罗马数字转整数(17_13_C++_简单)题目描述:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。原创 2025-08-12 21:41:58 · 947 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_接雨水(16_42_C++_困难)(动态规划)(双指针)
LeetCode 面试经典 150_数组/字符串_接雨水(16_42_C++_困难)题目描述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。原创 2025-08-11 21:50:36 · 1008 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_分发糖果(15_135_C++_困难)(贪心算法)
LeetCode 面试经典 150_数组/字符串_分发糖果(15_135_C++_困难)题目描述:n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子中,评分更高的那个会获得更多的糖果。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。原创 2025-08-09 23:08:56 · 1011 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_加油站(14_134_C++_中等)(贪心算法)
LeetCode 面试经典 150_数组/字符串_加油站(14_134_C++_中等) 题目描述:在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则 保证 它是 唯一的。原创 2025-08-08 23:03:10 · 1087 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_除自身以外数组的乘积(13_238_C++_中等)(前缀积)
LeetCode 面试经典 150_数组/字符串_除自身以外数组的乘积(13_238_C++_中等)题目描述:给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法,且在 O(n) 时间复杂度内完成此题。原创 2025-08-07 23:08:22 · 549 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_O(1)时间插入、删除和获取随机元素(12_380_C++_中等)(哈希表)
LeetCode 面试经典 150_数组/字符串_O(1)时间插入、删除和获取随机元素(12_380_C++_中等)实现RandomizedSet 类: RandomizedSet() 初始化 RandomizedSet 对象 bool insert(int val) 当元素 val 不存在时,向集合中插入该项,并返回 true ;否则,返回 false 。 bool remove(int val) 当元素 val 存在时,从集合中移除该项,并返回 true ;否则,返回 false。原创 2025-08-06 22:22:14 · 929 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_H 指数(11_274_C++_中等)(排序后再进行判断)(计数)
LeetCode 面试经典 150_数组/字符串_H 指数(11_274_C++_中等)题目描述:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h 指数的定义:h 代表“高引用次数” ,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇论文被引用次数大于等于 h 。如果 h 有多种可能的值,h 指数 是其中最大的那个。原创 2025-08-05 22:07:41 · 856 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_跳跃游戏 II(10_45_C++_中等)(贪心选择)
LeetCode 面试经典 150_数组/字符串_跳跃游戏 II(10_45_C++_中等)题目描述:给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: - 0 <= j <= nums[i] - i + j < n返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。原创 2025-08-04 21:38:43 · 460 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_跳跃游戏(9_55_C++_中等)(贪心算法)
LeetCode 面试经典 150_数组/字符串_跳跃游戏(9_55_C++_中等)题目描述:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。原创 2025-08-02 22:17:39 · 254 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_买卖股票的最佳时机 II(8_122_C++_中等)(贪心算法)
LeetCode 面试经典 150_数组/字符串_买卖股票的最佳时机 II(8_122_C++_中等)题目描述:给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。原创 2025-08-01 22:42:21 · 792 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_买卖股票的最佳时机(7_121_C++_简单)(贪心)
LeetCode 面试经典 150_数组/字符串_买卖股票的最佳时机(7_121_C++_简单)题目描述:给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。原创 2025-07-31 20:45:01 · 374 阅读 · 0 评论 -
LeetCode 面试经典 150_数组/字符串_轮转数组(6_189_C++_中等)(额外数组;转置)
LeetCode 面试经典 150_数组/字符串_轮转数组(6_189_C++_中等)题目描述:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。原创 2025-07-30 21:38:48 · 732 阅读 · 0 评论