经典算法合集
文章平均质量分 77
码农阿豪
成长从CtrlA+C+V开始
展开
-
力扣经典150题第五十题:用最少数量的箭引爆气球
本题通过对气球按照起始坐标进行排序,并遍历气球的方式,实现了求解引爆所有气球所必须射出的最小弓箭数。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。此外,我们也可以考虑其他实现方式,例如使用贪心算法或动态规划等方法来解决类似问题。原创 2024-04-29 14:00:00 · 868 阅读 · 4 评论 -
力扣经典150题第四十九题:插入区间
本题通过对区间的遍历和合并操作,实现了对新区间的插入操作。算法思路清晰简单,在处理类似问题时是一个不错的选择。除了当前算法,我们也可以考虑其他实现方式,例如使用二分查找来寻找新区间的插入位置,或者使用栈来辅助合并区间等方法。原创 2024-04-29 09:49:02 · 551 阅读 · 1 评论 -
力扣经典150题第四十八题:合并区间
本题通过对区间按照起始位置进行排序,然后合并重叠的区间,实现了对给定区间的合并操作。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。此外,我们也可以考虑其他方法实现区间合并,例如使用栈或递归等方式,来实现同样的功能。原创 2024-04-28 10:01:03 · 796 阅读 · 2 评论 -
力扣经典150题第四十七题:汇总区间
本题通过简单的数组遍历和区间合并的方式,实现了求解给定有序整数数组的最小区间范围列表。这个算法简单高效,在处理类似问题时是一个不错的选择。此外,我们也可以考虑优化算法以提高效率,例如使用更高效的数据结构或算法来实现同样的功能。原创 2024-04-28 09:54:38 · 630 阅读 · 0 评论 -
力扣经典150题第四十六题:最长连续序列
在本文中,我们将解决力扣经典150题中的第四十六题,该题目要求我们在未排序的整数数组中找出数字连续的最长序列的长度。我们将设计并实现时间复杂度为 O(n) 的算法解决此问题。在本文中,我们设计并实现了时间复杂度为 O(n) 的算法来解决最长连续序列问题。通过使用哈希表,我们可以在线性时间内解决该问题,并在题目给出的时间限制内完成计算。希望本文能对读者理解和掌握该问题的解题思路有所帮助。这样,根据目录模板完成了关于力扣第46题的博客,让读者更好地理解和学习这道题目的解法。原创 2024-04-27 10:21:37 · 321 阅读 · 1 评论 -
力扣经典150题第四十五题:存在重复元素 II
在本文中,我们将使用Java语言解决力扣经典150题中的第四十五题,该题目要求我们判断一个整数数组中是否存在两个相同的元素,且它们的索引之差不超过给定的k值。我们将深入分析问题,并给出解题思路和具体的算法实现。在本文中,我们介绍了使用Java语言解决存在重复元素 II 问题的一种解题思路,并给出了具体的算法实现。通过利用哈希表,我们可以在O(n)的时间复杂度内解决该问题,其中n是数组的长度。同时,我们也对算法的复杂度进行了分析,并进行了实例测试验证。希望本文能对读者理解和掌握该问题的解题思路有所帮助。原创 2024-04-27 10:18:54 · 274 阅读 · 0 评论 -
力扣经典150题第四十四题:快乐数
本题通过模拟数字变换的过程,利用哈希集合来检测循环,判断一个数是否是快乐数。这种解法的时间复杂度为 O(log n),空间复杂度也为 O(log n),是一种高效的解决方案。掌握这种利用哈希集合来避免重复计算的方法,能够更好地解决类似的数学问题,提高编程的技能和效率。原创 2024-04-26 14:00:00 · 532 阅读 · 3 评论 -
力扣经典150题第四十三题:两数之和
本题利用哈希表的快速查找特性,通过一次遍历数组即可找到和为目标值的两个元素。这种解法的时间复杂度为 O(n),空间复杂度也为 O(n),是一种高效的解决方案。哈希表的使用在解决数组和字符串相关的问题中具有广泛的应用,能够有效地降低时间复杂度。通过掌握哈希表的基本原理和操作,能够更加高效地解决类似的算法问题,提高编程的技能和效率。原创 2024-04-26 09:49:31 · 685 阅读 · 1 评论 -
力扣经典150题第四十二题:字母异位词分组
本篇博客介绍了力扣经典150题中的第四十二题:字母异位词分组。题目要求将给定的字符串数组中的字母异位词分组,并返回分组结果。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],将其中字母异位词(由重新排列源单词的所有字母得到的新单词)组合在一起,最终返回分组后的结果列表。输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]的长度,k 是字符串的最大长度。展示了几个不同的示例测试,验证了字母异位词分组的功能。原创 2024-04-25 15:45:00 · 976 阅读 · 4 评论 -
力扣经典150题第四十一题:有效的字母异位词
逐个减少哈希表中对应字符的计数。如果在减少过程中发现某个字符的计数小于零,或者最终哈希表中存在计数不为零的字符,则返回。本篇博客介绍了力扣经典150题中的第四十二题:有效的字母异位词。空间复杂度为 O(1),因为哈希表的大小是固定的(26 个字母)。输入: s = “anagram”, t = “nagaram”该解法的时间复杂度为 O(n),其中 n 是字符串。输入: s = “rat”, t = “car”中每个字符出现的次数,然后遍历字符串。字母异位词的定义是:如果。的字母异位词的功能。原创 2024-04-25 08:45:00 · 581 阅读 · 2 评论 -
力扣经典150题第四十题:同构字符串
空间复杂度为 O(1),因为字符集范围是 ASCII 字符,哈希表的大小是固定的。输入: pattern = “abba”, s = “dog cat cat dog”输入:pattern = “abba”, s = “dog cat cat fish”输入: pattern = “aaaa”, s = “dog cat cat dog”本篇博客介绍了力扣经典150题中的第四十题:同构字符串。是否同构,可以通过建立字符到字符的映射关系,然后进行验证。,那么这两个字符串是同构的。,要求判断它们是否是同构的。原创 2024-04-24 18:34:28 · 601 阅读 · 3 评论 -
力扣经典150题第三十九题:赎金信
本篇博客介绍了如何判断ransomNote是否能由magazine中的字符构成。通过使用哈希表记录字符出现次数,并逐个检查ransomNote中的字符是否满足条件,最终实现了判断功能。原创 2024-04-24 18:31:35 · 451 阅读 · 0 评论 -
力扣经典150题第三十八题:生命游戏
本篇博客介绍了如何使用原地算法实现生命游戏的状态转换。通过额外状态表示当前状态和下一个状态,并根据生存定律更新矩阵,最终实现了生命游戏的状态转换。原创 2024-04-23 14:15:00 · 761 阅读 · 5 评论 -
力扣经典150题第三十七题:矩阵置零
本篇博客介绍了如何使用原地算法实现矩阵置零操作,通过标记矩阵的第一行和第一列来记录零元素的位置,然后根据标记将相应位置置为 0,最终完成了矩阵置零的操作。原创 2024-04-23 08:45:00 · 499 阅读 · 3 评论 -
力扣经典150题第三十六题:旋转图像
本篇博客介绍了如何实现顺时针旋转90度的矩阵操作,并给出了具体的解题思路和代码实现。希望对你有所帮助!原创 2024-04-22 16:45:00 · 894 阅读 · 5 评论 -
力扣经典150题第三十五题:螺旋矩阵
本篇博客介绍了如何按照顺时针螺旋顺序遍历给定的矩阵,并给出了具体的解题思路和代码实现。希望这篇文章能够帮助你理解和掌握这道经典算法题目!原创 2024-04-22 12:29:20 · 502 阅读 · 0 评论 -
力扣经典150题解析之三十四:有效的数独
通过本文的详细解题思路和算法实现,可以有效地判断给定的数独是否有效。利用三个二维数组记录每行、每列和每个 3x3 宫内的数字出现情况,然后进行遍历验证,实现了对数独的有效性检查。原创 2024-04-20 15:29:39 · 1092 阅读 · 8 评论 -
力扣经典150题第三十三题:最小覆盖子串
通过本文的详细解题思路和算法实现,可以有效地解决给定字符串中涵盖指定字符集合的最小子串问题。利用滑动窗口和哈希表的方法,可以高效地实现该算法。原创 2024-04-20 15:26:49 · 413 阅读 · 0 评论 -
力扣经典150题第三十二题:串联所有单词的子串
通过本文的详细解题思路和算法实现,可以有效地解决给定字符串中找出所有串联子串的起始索引的问题。利用滑动窗口和哈希表的方法,可以高效地实现该算法。原创 2024-04-19 15:15:00 · 666 阅读 · 4 评论 -
力扣经典150题第三十一题:无重复字符的最长子串
无重复字符的最长子串问题是 LeetCode 经典题目之一,要求找出一个给定字符串中不含有重复字符的最长子串的长度。无重复字符的最长子串问题是一个经典的滑动窗口应用问题。通过本文的详细讲解和算法实现,可以有效地解决该问题,找出字符串中不含重复字符的最长子串的长度。原创 2024-04-19 09:15:00 · 849 阅读 · 3 评论 -
力扣经典150题第三十题:长度最小的子数组
在本篇文章中,我们将解析力扣经典150题中的第三十题:长度最小的子数组。题目要求找出数组中满足其总和大于等于目标值target的长度最小的连续子数组,并返回其长度。通过滑动窗口技巧,我们可以高效地找出满足条件的最小长度连续子数组,解决了该问题。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-18 14:45:00 · 908 阅读 · 3 评论 -
力扣经典150题解析之二十九:三数之和
在本篇文章中,我们将解析力扣经典150题中的第二十九题:三数之和。题目要求找出所有不重复的三元组,使得三元组中的三个数之和为0。通过双指针法,我们可以高效地找出所有和为0且不重复的三元组,解决了该问题。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-17 13:15:00 · 789 阅读 · 6 评论 -
力扣经典150题解析之二十八:盛最多水的容器
在这篇文章中,我们将解析力扣经典150题中的第二十八题:盛最多水的容器。题目要求找出能够容纳最多水的容器,即找出数组中的两条线段,使得它们与 x 轴构成的容器能够容纳最多的水。通过双指针法,我们可以高效地找出能够容纳最多水的容器,解决了该问题。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-16 23:05:02 · 712 阅读 · 4 评论 -
力扣经典150题第二十七题:两数之和 II - 输入有序数组
在这篇文章中,我们将解析力扣经典150题中的第二十六题:两数之和 II - 输入有序数组。题目要求在一个已按非递减顺序排列的整数数组中,找出两个数的和等于目标数target,并返回它们的下标。通过双指针法,我们可以高效地在有序数组中找出两个数的和等于目标数target,并返回它们的下标。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-17 08:45:00 · 385 阅读 · 1 评论 -
力扣经典150题第二十六题:判断子序列
在这篇文章中,我们将解析力扣经典150题中的第二十六题:判断子序列。给定字符串s和t,我们需要判断s是否为t的子序列。通过使用双指针遍历字符串s和t,我们可以有效地判断字符串s是否为字符串t的子序列。在遍历过程中,我们不断尝试将指针sPointer所指向的字符与指针tPointer所指向的字符进行比较,直到s的所有字符都被匹配或者t遍历完成。原创 2024-04-16 13:45:00 · 772 阅读 · 1 评论 -
力扣经典150题第二十五题:验证回文串
在这篇文章中,我们将解析力扣经典150题中的第二十五题:验证回文串。给定一个字符串s,如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,该字符串正着读和反着读都一样,则认为它是一个回文串。通过使用双指针遍历字符串并比较字符,我们可以有效地判断一个字符串是否是回文串。在遍历过程中,跳过非字母数字字符,只比较字母数字字符的小写形式是否相同。原创 2024-04-16 08:45:00 · 496 阅读 · 0 评论 -
力扣经典150题第二十四题:文本左右对齐
在这篇文章中,我们将讨论力扣经典150题中的第二十四题:文本左右对齐问题。给定一个单词数组words和一个长度maxWidth,我们需要重新排版单词,使其成为每行恰好有maxWidth个字符,且左右两端对齐的文本。通过贪心算法,我们成功解决了文本左右对齐的问题。在构建每一行时,我们尽可能多地放置单词,并通过均匀分配空格的方式对齐文本。特别地,我们要注意处理最后一行,确保左对齐而不是两端对齐。原创 2024-04-15 14:45:00 · 949 阅读 · 1 评论 -
力扣经典150题第二十三题:找出字符串中第一个匹配项的下标
在字符串处理中,查找第一个匹配项的下标是一个常见且基础的问题。这个问题在算法面试和日常编程中经常遇到。本文将介绍如何解决这一问题并给出相应的代码实现。通过实现字符串匹配算法,我们可以有效地找出字符串中第一个匹配项的下标。在实际应用中,字符串匹配是一个常见且重要的问题。这里我们使用了简单的暴力匹配算法,对目标字符串的每个可能起始位置进行了遍历匹配,找到第一个匹配项的下标。原创 2024-04-15 08:45:00 · 742 阅读 · 6 评论 -
力扣经典150题第二十二题:Z 字形变换
本文介绍了如何通过模拟 Z 字形排列的方式,将给定字符串按指定行数进行变换,得到 Z 字形变换后的结果字符串。原创 2024-04-14 13:45:00 · 778 阅读 · 7 评论 -
力扣经典150题第二十一题:反转字符串中的单词
本文介绍了如何通过字符串的分割和倒序遍历来实现字符串中单词顺序的反转,得到反转后的结果字符串。原创 2024-04-14 08:45:00 · 1486 阅读 · 4 评论 -
力扣经典150题第二十题:最长公共前缀
本文介绍了如何通过水平扫描的方法找出字符串数组中的最长公共前缀,通过逐个字符比较的方式来确定公共前缀的长度。原创 2024-04-13 12:45:00 · 658 阅读 · 9 评论 -
力扣经典150题第十九题:最后一个单词的长度
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5解释:最后一个单词是“World”,长度为5。示例 2:输入:s = " fly me to the moon "输出:4解释:最后一个单词是“moon”,长度为4。示例 3:输入:s = “luffy is still joyboy”原创 2024-04-13 08:45:00 · 381 阅读 · 3 评论 -
力扣经典150题第十八题:整数转罗马数字
本文介绍了如何将整数转换成罗马数字的算法,通过贪心算法逐步减去对应的值,得到最终的罗马数字表示。原创 2024-04-12 12:30:00 · 797 阅读 · 3 评论 -
力扣经典150题第十七题:罗马数字转整数
本文介绍了如何将罗马数字字符串转换成整数的算法,通过建立字符和数值的映射关系,遍历字符串根据字符大小关系计算最终结果。原创 2024-04-12 08:45:00 · 808 阅读 · 4 评论 -
力扣经典150题第十六题:接雨水
本文介绍了如何使用双指针来解决接雨水的问题,通过计算左右两侧的最大高度来确定柱子之间可以接到的雨水量。原创 2024-04-11 13:15:00 · 752 阅读 · 9 评论 -
力扣经典150题第十五题:分发糖果
本文介绍了如何使用两次遍历数组来解决分发糖果的问题,保证相邻孩子评分高的孩子获得更多糖果。原创 2024-04-11 08:45:00 · 650 阅读 · 3 评论 -
力扣经典150题第十四题:加油站
本文介绍了如何使用贪心算法解决加油站绕环路行驶的问题,通过计算总油量和总消耗来判断是否可以行驶一周。原创 2024-04-10 14:00:00 · 1313 阅读 · 9 评论 -
力扣经典150题第十三题:除自身以外数组的乘积
本文介绍如何设计一个算法,使用 O(n) 时间复杂度且不使用除法,计算数组nums中除自身以外所有元素的乘积。本文介绍了如何使用两种方法解决除自身以外数组的乘积问题,其中一种方法通过左右乘积列表实现,另一种方法优化了空间复杂度。该算法适用于需要在 O(n) 时间复杂度内解决数组乘积问题的场景。原创 2024-04-10 09:53:34 · 829 阅读 · 4 评论 -
力扣经典150题第十二题:O(1) 时间插入、删除和获取随机元素
本文介绍如何设计实现一个支持在 O(1) 时间复杂度内进行插入、删除和获取随机元素的数据结构 RandomizedSet。我们将探讨数据结构的设计思路、核心算法以及代码实现,并给出相关的代码示例和时间复杂度分析。本文介绍了如何设计实现一个支持 O(1) 时间复杂度的数据结构 RandomizedSet,通过哈希表和动态数组的结合实现了快速的插入、删除和随机访问操作。该数据结构在实际应用中具有广泛的适用性,能够有效地解决相关问题。原创 2024-04-09 11:45:00 · 1199 阅读 · 11 评论 -
力扣经典150题第十一题:H指数
通过本篇博客,我们详细讨论了力扣经典150题中的跳跃游戏 II 问题,并提供了贪心算法的实现方法。这种方法具有高效性和简洁性,在实际应用中具有广泛的适用性。希望本文能够帮助大家更好地理解和掌握跳跃游戏 II 的解题思路和实现方法,欢迎提出您的宝贵意见和建议。原创 2024-04-09 08:45:00 · 719 阅读 · 6 评论