贪心算法
文章平均质量分 62
酸奶代码
这个作者很懒,什么都没留下…
展开
-
LeetCode 860柠檬水找零(贪心算法)/406根据身高重建队列(贪心算法)
比如[6,1]就插入到下标为1的位置[5,0]就插入到下标为0的位置。最后你可以在练习本上写写,就发现是可以的。原创 2024-07-19 18:19:36 · 595 阅读 · 0 评论 -
LeetCode K次取反后最大化的数组和(贪心算法)
选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。由sort函数进行排序为主要的时间复杂度步骤为O(nlogn)选择下标 1 ,nums 变为 [4,-2,3]。以这种方式修改数组后,返回数组。可以多次选择同一个下标。原创 2024-07-08 18:31:34 · 367 阅读 · 0 评论 -
Leetcode买卖股票的最佳时机 II(最优贪心)
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。在这种情况下, 交易无法获得正利润,所以不参与交易可以获得最大利润,最大利润为 0。原创 2024-07-03 09:13:15 · 286 阅读 · 0 评论 -
LeetCode 343. 整数拆分(数学推理法(贪心),以及动态规划)
当我们将一个数拆分成若干个数之和时,如果限制必须拆成两个数,那么最理想的情况是这两个数尽可能接近,例如10可以拆成5和5,这样5乘以5得到的结果最大。然而,如果拆分的数量不受限制,那么拆分成尽量多的3是最优策略。这是因为3的乘积在所有数字相加的情况下是最大的。如果无法确保所有数都是3,那么拆出一个或两个2来配合3,可以进一步增加乘积。例如,6可以拆成3和3,7可以拆成3和2和2(如果允许的话),这样拆分后的乘积会比其他拆分方式更大。原创 2024-07-13 14:08:37 · 283 阅读 · 0 评论 -
Leetcode跳跃游戏||(用深搜算法找最优解,贪心算法)
就是移动下标达到了当前覆盖的最远距离下标时,步数就要加一,来增加覆盖距离。最后的步数就是最少步数。这里还是有个特殊情况需要考虑,当移动下标达到了当前覆盖的最远距离下标时。从下标为 0 跳到下标为 1 的位置,跳。向前跳转的最大长度。生成的测试用例可以到达。跳到最后一个位置的最小跳跃数是。1.深搜算法改进(在1的基础上)1.深搜算法改进(在1的基础上)步到达数组的最后一个位置。处,你可以跳转到任意。时间复杂度是O(N)空间复杂度是O(1)原创 2024-07-03 17:31:59 · 431 阅读 · 1 评论 -
LeetCode分发糖果(贪心思路分析)
题目描述。原创 2024-07-12 21:04:18 · 1787 阅读 · 0 评论 -
Leetcode跳跃游戏(用深搜算法、贪心算法)
我们可以换种思路,用贪心的算法,就是我们不去看他具体怎么去走,而是看他的覆盖范围,假如第一步是元素3,那么它的覆盖范围就是3,最终结果只要能覆盖到终点,就算成功。我们从后往前进行深搜,判断每个元素和我的目的元素的距离,如果距离满足,就往前继续深搜,如果不满足就往前继续寻找找出满足条件的元素,在进行递归。如果最后搜索到第一个元素也不满足了,就返回false,如果搜索到第一个元素,也能够找到。可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。给你一个非负整数数组。原创 2024-07-03 12:03:04 · 420 阅读 · 1 评论 -
LeetCode加油站(贪心算法/暴力,分析其时间和空间复杂度)
i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。情况二:rest[i] = gas[i]-cost[i]为一天剩下的油,i从0开始计算累加到最后一站,如果累加没有出现负数,说明从0出发,油就没有断过,那么0就是起点。每个加油站的剩余量rest[i]为gas[i] - cost[i]。原创 2024-07-10 00:39:28 · 1073 阅读 · 0 评论