
经典算法合集
文章平均质量分 91
码农阿豪@新空间
滴水穿石,毅力成就非凡,持之以恒,成功指日可待。
商务合作请联系工作室微信15279484656;
需要技术交流,面试分享,工作吐槽,答疑解惑,可加我进群唠嗑,里面都是各行程序员大佬
展开
-
力扣经典150题第六十题:反转链表 II
本文介绍了如何使用Java实现反转链表 II。通过使用三个指针,我们可以有效地反转链表的一部分,满足题目的要求。这是一道常见的链表问题,在面试中也经常会被考察到。原创 2024-05-12 17:15:00 · 21723 阅读 · 8 评论 -
力扣经典150题第五十九题: 随机链表的复制
本文介绍了如何使用Java实现随机链表的深拷贝。通过HashMap来建立原节点和新节点之间的映射关系,实现了链表的深拷贝。这是一道经典的链表问题,在面试中也经常会被考察到。原创 2024-05-12 09:00:00 · 21058 阅读 · 4 评论 -
力扣经典150题第五十八题:合并两个有序链表
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。本题可以通过递归或迭代的方式合并两个有序链表。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]输入:l1 = [], l2 = []输出:[1,1,2,3,4,4]原创 2024-05-06 15:15:00 · 21512 阅读 · 27 评论 -
力扣经典150题第五十七题:两数相加
给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。本题可以通过模拟加法的方式求解,从链表的头节点开始逐位相加,注意进位的处理。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]输入:l1 = [2,4,3], l2 = [5,6,4]请你将两个数相加,并以相同形式返回一个表示和的链表。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]输出:[7,0,8]原创 2024-05-06 08:45:00 · 20160 阅读 · 7 评论 -
力扣经典150题第五十六题:环形链表
使用快慢指针可以判断链表中是否有环。快指针每次移动两步,慢指针每次移动一步,如果存在环,两个指针最终会在环中相遇。指针再次到达,则链表中存在环。来表示链表尾连接到链表中的位置(索引从 0 开始)。输入:head = [3,2,0,-4], pos = 1。输入:head = [1,2], pos = 0。解释:链表中有一个环,其尾部连接到第二个节点。解释:链表中有一个环,其尾部连接到第一个节点。输入:head = [1], pos = -1。,判断链表中是否有环。给你一个链表的头节点。解释:链表中没有环。原创 2024-05-05 23:01:25 · 19871 阅读 · 5 评论 -
力扣经典150题第五十五题:逆波兰表达式求值
本题通过使用栈来实现逆波兰表达式的求值,利用栈的后进先出特性完成了计算。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。除了当前算法,我们也可以考虑其他实现方式,例如使用队列、递归等方法来解决类似问题。原创 2024-05-05 22:48:44 · 19832 阅读 · 4 评论 -
力扣经典150题第五十三题:基本计算器
在进行表达式计算时,我们可以使用栈来保存数字和运算符,并在遇到右括号时进行计算。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如。输入:s = “(1+(4+5+2)-3)+(6+8)”,请你实现一个基本计算器来计算并返回它的值。输入:s = " 2-1 + 2 "输入:s = “1 + 1”给你一个字符串表达式。原创 2024-05-05 22:46:39 · 19720 阅读 · 1 评论 -
力扣经典150题第五十四题:最小栈
本题通过设计一个辅助栈来实现在常数时间内检索到最小元素的要求,实现了一个最小栈的数据结构。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。除了当前算法,我们也可以考虑其他实现方式,例如使用双端队列、优先队列等方法来解决类似问题。原创 2024-05-04 12:30:00 · 19996 阅读 · 8 评论 -
力扣经典150题第五十二题:简化路径
本题通过使用栈来简化路径,实现了将 Unix 风格绝对路径转化为更加简洁的规范路径。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。除了当前算法,我们也可以考虑其他实现方式,例如使用正则表达式、双指针等方法来解决类似问题。原创 2024-05-04 08:45:00 · 19579 阅读 · 1 评论 -
力扣经典150题第五十一题:有效的括号
本题通过使用栈来判断字符串中的括号是否有效,实现了对字符串有效性的判断。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。除了当前算法,我们也可以考虑其他实现方式,例如使用递归、正则表达式等方法来解决类似问题。原创 2024-05-03 21:18:27 · 19412 阅读 · 2 评论 -
力扣经典150题第五十题:用最少数量的箭引爆气球
本题通过对气球按照起始坐标进行排序,并遍历气球的方式,实现了求解引爆所有气球所必须射出的最小弓箭数。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。此外,我们也可以考虑其他实现方式,例如使用贪心算法或动态规划等方法来解决类似问题。原创 2024-04-29 14:00:00 · 19930 阅读 · 8 评论 -
力扣经典150题第四十九题:插入区间
本题通过对区间的遍历和合并操作,实现了对新区间的插入操作。算法思路清晰简单,在处理类似问题时是一个不错的选择。除了当前算法,我们也可以考虑其他实现方式,例如使用二分查找来寻找新区间的插入位置,或者使用栈来辅助合并区间等方法。原创 2024-04-29 09:49:02 · 19147 阅读 · 1 评论 -
力扣经典150题第四十八题:合并区间
本题通过对区间按照起始位置进行排序,然后合并重叠的区间,实现了对给定区间的合并操作。这个算法思路清晰简单,在处理类似问题时是一个不错的选择。此外,我们也可以考虑其他方法实现区间合并,例如使用栈或递归等方式,来实现同样的功能。原创 2024-04-28 10:01:03 · 19115 阅读 · 5 评论 -
力扣经典150题第四十七题:汇总区间
本题通过简单的数组遍历和区间合并的方式,实现了求解给定有序整数数组的最小区间范围列表。这个算法简单高效,在处理类似问题时是一个不错的选择。此外,我们也可以考虑优化算法以提高效率,例如使用更高效的数据结构或算法来实现同样的功能。原创 2024-04-28 09:54:38 · 18861 阅读 · 0 评论 -
力扣经典150题第四十六题:最长连续序列
在本文中,我们将解决力扣经典150题中的第四十六题,该题目要求我们在未排序的整数数组中找出数字连续的最长序列的长度。我们将设计并实现时间复杂度为 O(n) 的算法解决此问题。在本文中,我们设计并实现了时间复杂度为 O(n) 的算法来解决最长连续序列问题。通过使用哈希表,我们可以在线性时间内解决该问题,并在题目给出的时间限制内完成计算。希望本文能对读者理解和掌握该问题的解题思路有所帮助。这样,根据目录模板完成了关于力扣第46题的博客,让读者更好地理解和学习这道题目的解法。原创 2024-04-27 10:21:37 · 18180 阅读 · 2 评论 -
力扣经典150题第四十五题:存在重复元素 II
在本文中,我们将使用Java语言解决力扣经典150题中的第四十五题,该题目要求我们判断一个整数数组中是否存在两个相同的元素,且它们的索引之差不超过给定的k值。我们将深入分析问题,并给出解题思路和具体的算法实现。在本文中,我们介绍了使用Java语言解决存在重复元素 II 问题的一种解题思路,并给出了具体的算法实现。通过利用哈希表,我们可以在O(n)的时间复杂度内解决该问题,其中n是数组的长度。同时,我们也对算法的复杂度进行了分析,并进行了实例测试验证。希望本文能对读者理解和掌握该问题的解题思路有所帮助。原创 2024-04-27 10:18:54 · 18032 阅读 · 0 评论 -
力扣经典150题第四十四题:快乐数
本题通过模拟数字变换的过程,利用哈希集合来检测循环,判断一个数是否是快乐数。这种解法的时间复杂度为 O(log n),空间复杂度也为 O(log n),是一种高效的解决方案。掌握这种利用哈希集合来避免重复计算的方法,能够更好地解决类似的数学问题,提高编程的技能和效率。原创 2024-04-26 14:00:00 · 18190 阅读 · 3 评论 -
力扣经典150题第四十三题:两数之和
本题利用哈希表的快速查找特性,通过一次遍历数组即可找到和为目标值的两个元素。这种解法的时间复杂度为 O(n),空间复杂度也为 O(n),是一种高效的解决方案。哈希表的使用在解决数组和字符串相关的问题中具有广泛的应用,能够有效地降低时间复杂度。通过掌握哈希表的基本原理和操作,能够更加高效地解决类似的算法问题,提高编程的技能和效率。原创 2024-04-26 09:49:31 · 18302 阅读 · 1 评论 -
力扣经典150题第四十二题:字母异位词分组
本篇博客介绍了力扣经典150题中的第四十二题:字母异位词分组。题目要求将给定的字符串数组中的字母异位词分组,并返回分组结果。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],将其中字母异位词(由重新排列源单词的所有字母得到的新单词)组合在一起,最终返回分组后的结果列表。输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]的长度,k 是字符串的最大长度。展示了几个不同的示例测试,验证了字母异位词分组的功能。原创 2024-04-25 15:45:00 · 18484 阅读 · 4 评论 -
力扣经典150题第四十一题:有效的字母异位词
逐个减少哈希表中对应字符的计数。如果在减少过程中发现某个字符的计数小于零,或者最终哈希表中存在计数不为零的字符,则返回。本篇博客介绍了力扣经典150题中的第四十二题:有效的字母异位词。空间复杂度为 O(1),因为哈希表的大小是固定的(26 个字母)。输入: s = “anagram”, t = “nagaram”该解法的时间复杂度为 O(n),其中 n 是字符串。输入: s = “rat”, t = “car”中每个字符出现的次数,然后遍历字符串。字母异位词的定义是:如果。的字母异位词的功能。原创 2024-04-25 08:45:00 · 17978 阅读 · 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 · 18278 阅读 · 3 评论 -
力扣经典150题第三十九题:赎金信
本篇博客介绍了如何判断ransomNote是否能由magazine中的字符构成。通过使用哈希表记录字符出现次数,并逐个检查ransomNote中的字符是否满足条件,最终实现了判断功能。原创 2024-04-24 18:31:35 · 17669 阅读 · 0 评论 -
力扣经典150题第三十八题:生命游戏
本篇博客介绍了如何使用原地算法实现生命游戏的状态转换。通过额外状态表示当前状态和下一个状态,并根据生存定律更新矩阵,最终实现了生命游戏的状态转换。原创 2024-04-23 14:15:00 · 17896 阅读 · 5 评论 -
力扣经典150题第三十七题:矩阵置零
本篇博客介绍了如何使用原地算法实现矩阵置零操作,通过标记矩阵的第一行和第一列来记录零元素的位置,然后根据标记将相应位置置为 0,最终完成了矩阵置零的操作。原创 2024-04-23 08:45:00 · 17595 阅读 · 3 评论 -
力扣经典150题第三十六题:旋转图像
本篇博客介绍了如何实现顺时针旋转90度的矩阵操作,并给出了具体的解题思路和代码实现。希望对你有所帮助!原创 2024-04-22 16:45:00 · 17849 阅读 · 7 评论 -
力扣经典150题第三十五题:螺旋矩阵
本篇博客介绍了如何按照顺时针螺旋顺序遍历给定的矩阵,并给出了具体的解题思路和代码实现。希望这篇文章能够帮助你理解和掌握这道经典算法题目!原创 2024-04-22 12:29:20 · 17310 阅读 · 0 评论 -
力扣经典150题解析之三十四:有效的数独
通过本文的详细解题思路和算法实现,可以有效地判断给定的数独是否有效。利用三个二维数组记录每行、每列和每个 3x3 宫内的数字出现情况,然后进行遍历验证,实现了对数独的有效性检查。原创 2024-04-20 15:29:39 · 17910 阅读 · 8 评论 -
力扣经典150题第三十三题:最小覆盖子串
通过本文的详细解题思路和算法实现,可以有效地解决给定字符串中涵盖指定字符集合的最小子串问题。利用滑动窗口和哈希表的方法,可以高效地实现该算法。原创 2024-04-20 15:26:49 · 17034 阅读 · 0 评论 -
力扣经典150题第三十二题:串联所有单词的子串
通过本文的详细解题思路和算法实现,可以有效地解决给定字符串中找出所有串联子串的起始索引的问题。利用滑动窗口和哈希表的方法,可以高效地实现该算法。原创 2024-04-19 15:15:00 · 17263 阅读 · 4 评论 -
力扣经典150题第三十一题:无重复字符的最长子串
无重复字符的最长子串问题是 LeetCode 经典题目之一,要求找出一个给定字符串中不含有重复字符的最长子串的长度。无重复字符的最长子串问题是一个经典的滑动窗口应用问题。通过本文的详细讲解和算法实现,可以有效地解决该问题,找出字符串中不含重复字符的最长子串的长度。原创 2024-04-19 09:15:00 · 17444 阅读 · 3 评论 -
力扣经典150题第三十题:长度最小的子数组
在本篇文章中,我们将解析力扣经典150题中的第三十题:长度最小的子数组。题目要求找出数组中满足其总和大于等于目标值target的长度最小的连续子数组,并返回其长度。通过滑动窗口技巧,我们可以高效地找出满足条件的最小长度连续子数组,解决了该问题。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-18 14:45:00 · 17382 阅读 · 3 评论 -
力扣经典150题解析之二十九:三数之和
在本篇文章中,我们将解析力扣经典150题中的第二十九题:三数之和。题目要求找出所有不重复的三元组,使得三元组中的三个数之和为0。通过双指针法,我们可以高效地找出所有和为0且不重复的三元组,解决了该问题。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-17 13:15:00 · 17170 阅读 · 6 评论 -
力扣经典150题解析之二十八:盛最多水的容器
在这篇文章中,我们将解析力扣经典150题中的第二十八题:盛最多水的容器。题目要求找出能够容纳最多水的容器,即找出数组中的两条线段,使得它们与 x 轴构成的容器能够容纳最多的水。通过双指针法,我们可以高效地找出能够容纳最多水的容器,解决了该问题。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-16 23:05:02 · 16911 阅读 · 4 评论 -
力扣经典150题第二十七题:两数之和 II - 输入有序数组
在这篇文章中,我们将解析力扣经典150题中的第二十六题:两数之和 II - 输入有序数组。题目要求在一个已按非递减顺序排列的整数数组中,找出两个数的和等于目标数target,并返回它们的下标。通过双指针法,我们可以高效地在有序数组中找出两个数的和等于目标数target,并返回它们的下标。本文详细介绍了解题思路、算法实现和复杂度分析,希望对读者理解该问题和解决方法有所帮助。原创 2024-04-17 08:45:00 · 16624 阅读 · 1 评论 -
力扣经典150题第二十六题:判断子序列
在这篇文章中,我们将解析力扣经典150题中的第二十六题:判断子序列。给定字符串s和t,我们需要判断s是否为t的子序列。通过使用双指针遍历字符串s和t,我们可以有效地判断字符串s是否为字符串t的子序列。在遍历过程中,我们不断尝试将指针sPointer所指向的字符与指针tPointer所指向的字符进行比较,直到s的所有字符都被匹配或者t遍历完成。原创 2024-04-16 13:45:00 · 16903 阅读 · 1 评论 -
力扣经典150题第二十五题:验证回文串
在这篇文章中,我们将解析力扣经典150题中的第二十五题:验证回文串。给定一个字符串s,如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,该字符串正着读和反着读都一样,则认为它是一个回文串。通过使用双指针遍历字符串并比较字符,我们可以有效地判断一个字符串是否是回文串。在遍历过程中,跳过非字母数字字符,只比较字母数字字符的小写形式是否相同。原创 2024-04-16 08:45:00 · 16688 阅读 · 0 评论 -
力扣经典150题第二十四题:文本左右对齐
在这篇文章中,我们将讨论力扣经典150题中的第二十四题:文本左右对齐问题。给定一个单词数组words和一个长度maxWidth,我们需要重新排版单词,使其成为每行恰好有maxWidth个字符,且左右两端对齐的文本。通过贪心算法,我们成功解决了文本左右对齐的问题。在构建每一行时,我们尽可能多地放置单词,并通过均匀分配空格的方式对齐文本。特别地,我们要注意处理最后一行,确保左对齐而不是两端对齐。原创 2024-04-15 14:45:00 · 16887 阅读 · 1 评论 -
力扣经典150题第二十三题:找出字符串中第一个匹配项的下标
在字符串处理中,查找第一个匹配项的下标是一个常见且基础的问题。这个问题在算法面试和日常编程中经常遇到。本文将介绍如何解决这一问题并给出相应的代码实现。通过实现字符串匹配算法,我们可以有效地找出字符串中第一个匹配项的下标。在实际应用中,字符串匹配是一个常见且重要的问题。这里我们使用了简单的暴力匹配算法,对目标字符串的每个可能起始位置进行了遍历匹配,找到第一个匹配项的下标。原创 2024-04-15 08:45:00 · 16631 阅读 · 7 评论 -
力扣经典150题第二十二题:Z 字形变换
本文介绍了如何通过模拟 Z 字形排列的方式,将给定字符串按指定行数进行变换,得到 Z 字形变换后的结果字符串。原创 2024-04-14 13:45:00 · 16597 阅读 · 8 评论 -
力扣经典150题第二十一题:反转字符串中的单词
本文介绍了如何通过字符串的分割和倒序遍历来实现字符串中单词顺序的反转,得到反转后的结果字符串。原创 2024-04-14 08:45:00 · 17216 阅读 · 5 评论