- 博客(119)
- 收藏
- 关注
原创 【2025-美团】放它一马
本文探讨了在顺序遇到怪物时如何最大化经验值的问题。分析表明,每个怪物有放走或击败两种选择,击败经验值受击败次数模10的影响。初始思路采用直接比较或动态规划,但存在时间复杂度高的问题。改进方案优化为仅考虑击败次数的模10情况,使用动态规划数组记录不同模值状态下的最大经验值。最终算法时间复杂度降为O(n),有效解决了问题。关键点在于认识到经验值仅与击败次数的模10相关,从而简化状态转移过程。
2025-12-04 15:24:32
451
原创 【leetcode100】寻找重复数
本文探讨在给定n+1个整数的数组中找出唯一重复数的问题。介绍了两种O(1)空间复杂度的解法:1)Floyd快慢指针法,通过模拟链表环检测重复;2)基于鸽巢原理的二分法,统计小于中位数的元素数量确定重复区间。两种方法均满足不修改数组且使用常量空间的要求,其中二分法的时间复杂度为O(n log n),快慢指针法则为O(n)。
2025-07-19 17:45:10
434
原创 【leetcode100】下一个排列
题目描述整数数组的下一个排列是指其字典序更大的下一个排列,若不存在则返回最小排列。解题思路是从后向前找到第一个降序位置,交换其后刚好大于它的元素,然后反转后续部分。代码实现中,首先定位转折点,执行必要交换后反转剩余部分,满足原地修改要求。该算法时间复杂度O(n),空间复杂度O(1)。
2025-07-09 15:03:59
435
原创 【leetcode100】颜色分类
本文探讨了荷兰国旗问题(三色排序)的解决方案。初始采用冒泡排序法(时间复杂度O(n²)),后优化为三指针法:设置low、mid、high三个指针分别处理0、1、2的排序,通过交换元素实现一次遍历(时间复杂度O(n))。
2025-07-08 18:10:56
310
原创 【leetcode100】编辑距离
本题目要求计算将一个单词转换为另一个单词所需的最小操作次数,允许的操作为插入、删除或替换字符。解题思路包括递归+记忆化和动态规划两种方法。递归方法通过比较单词末尾字符,根据三种操作分别递归计算操作次数并使用缓存优化;动态规划则构建二维数组,保存子问题的最优解。两种方法均能有效求解,动态规划的空间复杂度更高但更直观。
2025-07-07 16:02:19
348
原创 【leetcode100】最长回文子串
本文探讨了寻找字符串中最长回文子串的算法。暴力解法时间复杂度高达O(n³),通过双重循环检查所有子串。优化后的中心扩展法将复杂度降至O(n²),从每个字符向两侧扩展寻找回文。文章还提及更高效的Manacher算法(未展开)。中心扩展法代码实现展示了如何通过比较左右边界来定位最长回文,为处理该问题提供了实用方案。两种方法对比突显了算法优化的重要性。
2025-07-05 14:30:05
386
原创 【leetcode100】最小路径和
本文探讨了在m×n网格中寻找从左上角到右下角的最小路径和问题。初始解法使用二维动态规划数组,空间复杂度为O(mn)。通过优化,提出使用一维数组存储行路径和的改进方案,降低了空间复杂度。两种方法的核心思想都是:第一行/列只能单向累加,其余位置取上方或左方较小值加上当前格值。最终返回右下角的最小路径和。文章提供了完整的Python代码实现,并比较了两种方法的优缺点。
2025-07-04 15:03:01
416
原创 【leetcode100】不相交的线
在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足: nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。
2025-06-22 16:15:48
424
原创 【leetcode100】最长公共子序列
找到两个字符串的最长公共子序列的长度。最长公共子序列是指在不改变字符顺序的情况下,两个字符串共同拥有的最长子序列。例如,"ace"是"abcde"和"ace"的最长公共子序列,长度为3。如果两个字符串没有公共子序列,则返回0。
2025-05-09 12:34:47
592
原创 【leetcode100】最长递增子序列
给你一个整数数组nums,找到其中最长严格递增子序列的长度。是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。
2025-05-04 15:46:21
429
原创 【leetcode100】买卖股票的最佳时机Ⅱ
给你一个整数数组prices,其中prices[i]表示某支股票第i天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候只能持有股票。你也可以先购买,然后在出售。返回你能获得的利润。
2025-05-04 15:32:38
518
原创 【leetcode100】打家劫舍Ⅲ
小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为root。除了root之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果,房屋将自动报警。给定二叉树的root。返回,小偷能够盗取的最高金额。
2025-04-30 16:52:33
326
原创 【leetcode100】打家劫舍Ⅱ
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。
2025-04-30 16:23:56
446
原创 【leetcode100】打家劫舍
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,。给定一个代表每个房屋存放金额的非负整数数组,计算你,一夜之内能够偷窃到的最高金额。
2025-04-27 23:32:59
322
原创 【leetcode100】单词拆分
给你一个字符串s和一个字符串列表wordDict作为字典。如果可以利用字典中出现的一个或多个单词拼接出s则返回true。不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。
2025-04-26 14:41:11
566
原创 【leetcode100】完全平方数
给你一个整数n,返回和为n的完全平方数的最少数量。是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,149和16都是完全平方数,而3和11不是。
2025-04-26 14:30:11
454
原创 【leetcode100】组合总和Ⅳ
给你一个由整数组成的数组nums,和一个目标整数target。请你从nums中找出并返回总和为target的元素组合的个数。题目数据保证答案符合 32 位整数范围。
2025-04-24 16:38:53
335
原创 【leetcode100】目标和
给你一个非负整数数组nums和一个整数target。向数组中的每个整数前添加'+'或'-',然后串联起所有整数,可以构造一个2'+'1'-'"+2-1"返回可以通过上述方法构造的、运算结果等于target的不同的数目。
2025-04-24 16:37:19
530
原创 【leetcode100】零钱兑换Ⅱ
给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。
2025-04-22 12:02:39
738
原创 【leetcode100】零钱兑换
给你一个整数数组coins,表示不同面额的硬币;以及一个整数amount,表示总金额。计算并返回可以凑成总金额所需的。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认为每种硬币的数量是无限的。
2025-04-22 12:02:33
490
原创 【leetcode100】一和零
给你一个二进制字符串数组strs和两个整数m和n。请你找出并返回strs的最大子集的长度,该子集中有m个0和n个1。如果x的所有元素也是y的元素,集合x是集合y的。
2025-04-20 20:56:21
550
原创 【leetcode100】最后一块石头的重量Ⅱ
有一堆石头,用整数数组stones表示。其中stones[i]表示第i块石头的重量。每一回合,从中选出,然后将它们一起粉碎。
2025-04-19 15:53:16
507
原创 【leetcode100】分割等和子集
给你一个 只包含正整数 的 非空 数组 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。
2025-04-19 15:22:01
719
原创 【leetcode100】杨辉三角
给定一个非负整数 numRows生成「杨辉三角」的前 numRows行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
2025-04-16 16:09:37
400
原创 【leetcode100】划分字母区间
给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串 "ababcc" 能够被分为 ["abab", "cc"],但类似 ["aba", "bcc"] 或 ["ab", "ab", "cc"] 的划分是非法的。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。
2025-04-09 12:08:49
400
原创 【leetcode100】跳跃游戏
给你一个非负整数数组nums,你最初位于数组的。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。
2025-04-06 17:27:32
227
原创 【leetcode100】跳跃游戏Ⅱ
给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向后跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意i + j < n返回到达的最小跳跃次数。生成的测试用例可以到达。
2025-04-06 17:27:10
287
原创 【leetcode100】买卖股票的最佳时机
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择买入这只股票,并选择在卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。
2025-04-06 13:52:08
904
原创 【leetcode100】数组中的第K个最大元素
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。
2025-04-04 17:58:55
323
原创 【leetcode100】字符串解码
给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: ,表示其中方括号内部的 正好重复 次。注意 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数。
2025-04-02 23:47:49
497
原创 【leetcode100】每日温度
给定一个整数数组 ,表示每天的温度,返回一个数组 ,其中 是指对于第 天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。
2025-04-02 23:47:04
559
原创 【leetcode100】搜索螺旋排序数组
整数数组nums按升序排列,数组中的值。在传递给函数之前,nums在预先未知的某个下标k)上进行了,使数组变为(下标计数)。例如,在下标3处经旋转后可能变为。给你的数组nums和一个整数target,如果nums中存在这个目标值target,则返回它的下标,否则返回-1。你必须设计一个时间复杂度为O(log n)的算法解决此问题。
2025-03-21 15:03:40
314
原创 【leetcode100】寻找旋转排序数组中的最小值
已知一个长度为n的数组,预先按照升序排列,经由1到n次后,得到输入数组。例如,原数组47注意,数组的结果为数组。给你一个元素值的数组nums,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的。你必须设计一个时间复杂度为O(log n)的算法解决此问题。
2025-03-21 15:03:15
475
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅