贪心算法
文章平均质量分 61
嘻嘻哈哈樱桃
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单调递增数字力扣--738
举例子:1234,已经是递增, 从后往前遍历,没有需要修改的地方,那么进入到下面的循环,a这时候就在末尾他不小于s.length,所以不用进入到这个循环中,直接返回即可。在10的时候发现前面的数字比后面的大,1变成0 ,百位上的0变成9,后面的0仍然为0,最后结果为900,显然不是最大的,最大的应该是999。比如32:3大于2,如果3不减1的话,个位数没有办法在保证递增的情况下还满足题意,所以3-1,然后把个位变成9,最后结果为29。还要加后面的一个循环?的最大数字,且数字呈。时,我们称这个整数是。原创 2025-03-11 16:52:30 · 359 阅读 · 0 评论 -
合并区间力扣--56
区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。先排序,让所有的相邻区间尽可能的重叠在一起,按左边界。表示若干个区间的集合,其中单个区间为。请你合并所有重叠的区间,并返回。原创 2025-03-11 15:57:09 · 344 阅读 · 0 评论 -
划分字母区间力扣--763
给你一个字符串s。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。例如,字符串"ababcc"能够被分为,但类似或的划分是非法的。注意,划分结果需要满足:将所有划分结果按顺序连接,得到的字符串仍然是s。返回一个表示每个字符串片段的长度的列表。[9,7,8]划分结果为 "ababcbaca"、"defegde"、"hijhklij"。每个字母最多出现在一个片段中。像 "ababcbacadefegde", "hijhklij" 这样的划分是错误的,因为划分的片段数较少。原创 2025-03-11 15:54:19 · 322 阅读 · 0 评论 -
无重叠区间力扣--435
你需要移除两个 [1,2] 来使剩下的区间没有重叠。你不需要移除任何区间,因为它们已经是无重叠的了。需要移除区间的最小数量,使剩余区间互不重叠。移除 [1,3] 后,剩下的区间没有重叠。只在一点上接触的区间是。原创 2025-03-10 17:27:09 · 320 阅读 · 0 评论 -
用最少数量的箭引爆气球
题目中说的是:满足 xstart ≤ x ≤ xend,则该气球会被引爆。局部最优:当气球出现重叠,一起射,所用弓箭最少。有一些球形气球贴在一堵用 XY 平面表示的墙面上。-在x = 11处发射箭,击破气球[10,16]和[7,12]。- 在x = 2处发射箭,击破气球[1,2]和[2,3]。- 在x = 4处射出箭,击破气球[3,4]和[4,5]。-在x = 6处射出箭,击破气球[2,8]和[1,6]。处射出一支箭,若有一个气球的直径的开始和结束坐标为。每个气球需要射出一支箭,总共需要4支箭。原创 2025-03-10 16:57:21 · 426 阅读 · 0 评论 -
根据身高重建队列力扣--406
当他把【6,1】插入到【7,1】前面的话,不会影响【7,1】前面只有一个大于等于他的情况,所以说从大到小排序。编号为 4 的人身高为 4 ,有 4 个身高更高或者相同的人排在他前面,即编号为 0、1、2、3 的人。编号为 2 的人身高为 5 ,有 2 个身高更高或者相同的人排在他前面,即编号为 0 和 1 的人。编号为 3 的人身高为 6 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。编号为 5 的人身高为 7 ,有 1 个身高更高或者相同的人排在他前面,即编号为 1 的人。原创 2025-03-10 16:27:07 · 1140 阅读 · 0 评论 -
柠檬水找零力扣--860
客户只会给5,10,20这三种数值的钱,给5时候不需要找零,给10找一个5,给20找一个十和两个五或者找三个五,由此可见,找5的灵活性更大,而给10只能找5,所以讨论的范围在给20 的时候,如果有10,优先给10,由此来计算。对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。原创 2025-03-06 09:50:56 · 5108 阅读 · 0 评论 -
分发糖果力扣--135
比较右边的大于左边的情况 ratings【i】>ratings[i+1],因为这里有i+1,所以遍历的时候是从下标为ratings.length-2的位置开始的。所以先从前往后,把下标为0的糖果数目先定为1,比较右边的大于左边的情况 ratings【i】>ratings[i-1],因为这里有i-1,所以遍历的时候是从下标为1的位置开始的。糖果: 1 2 1 2 1 1 1。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。原创 2025-03-06 09:40:01 · 582 阅读 · 0 评论 -
加油站力扣--134
i从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置,因为这个区间选择任何一个位置作为起点,到i这里都会断油,那么起始位置从i+1算起,再从0计算curSum。假设这个中间的数叫做j,0-i之间num1<0,如果j到i之间num2>0的话,那么0到j之间num3<0,到j就停止了根本不可能到i,所以直接是i的下一个数字开始。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。你有一辆油箱容量无限的的汽车,从第。原创 2025-03-05 10:29:29 · 356 阅读 · 0 评论 -
K次取反后最大化的数组和力扣--1005
所以先排序,然后遍历,如果是负数就取相反数,在for循环中,i<nums.length和k>0的顺序不能换,因为先判断i<nums.length,如果i已经到了最后,那么说明负数都变成了正数,就要对最小的正数进行操作了,如果k>0在前面会报错。思路是把绝对值大的负数变成正数,然后如果都是正数的话,把最小值再变成负数消耗k,这样对结果影响最小。选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2]。选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4]。可以多次选择同一个下标。原创 2025-03-05 09:36:20 · 314 阅读 · 0 评论 -
跳跃游戏||力扣--45
给定一个长度为n的整数数组nums。初始位置为nums[0]。每个元素nums[i]表示从索引i向后跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意i + j < n返回到达的最小跳跃次数。生成的测试用例可以到达。2跳到最后一个位置的最小跳跃数是 2从下标为 0 跳到下标为 1 的位置,跳 1步,然后跳 3步到达数组的最后一个位置。2nums[n-1]原创 2025-03-05 09:08:41 · 293 阅读 · 0 评论 -
跳跃游戏力扣--55
给你一个非负整数数组 ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 ;否则,返回 。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远原创 2025-03-04 14:53:05 · 205 阅读 · 0 评论 -
买卖股票的最佳时机II力扣--122
相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6 - 3 = 3。在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4。最大总利润为 4 + 3 = 7。比如:[7,1,5,3,6,4]原创 2025-02-27 10:23:33 · 327 阅读 · 0 评论 -
最大子数组和力扣--53
记录和,遍历,一旦和变成负数,他会使得后面要加的那个数字变小,所以思路是一旦和变成负数,就舍弃他们,从下一个数字开始计算。不是遇到负数就舍弃他!,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。连续子数组 [4,-1,2,1] 的和最大,为 6。实时更新最后的结果,哪个大保留哪个。是数组中的一个连续部分。原创 2025-02-27 09:53:18 · 365 阅读 · 0 评论 -
摆动序列力扣--376
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如,是一个,因为差值是正负交替出现的。可以通过从原始序列中删除一些(也可以不删除)元素来获得,剩下的元素保持其原始顺序。给你一个整数数组nums,返回nums中作为的。6整个序列均为摆动序列,各元素之间的差值为 (6, -3, 5, -7, 3)。7这个序列包含几个长度为 7 摆动序列。原创 2025-02-27 09:29:27 · 936 阅读 · 0 评论 -
分发饼干力扣--455
if 里的 index 指向 胃口 10, for 里的 i 指向饼干 9,因为 饼干 9 满足不了 胃口 10,所以 i 持续向前移动,而 index 走不到。外面的 for 是里的下标 i 是固定移动的,而 if 里面的下标 index 是符合条件才移动的。的逻辑,所以 index 不会移动,那么当 i 持续向前移动,最后所有的饼干都匹配不上。虽然你有两块小饼干,由于他们的尺寸都是 1,你只能让胃口值是 1 的孩子满足。是先遍历的胃口,在遍历的饼干,那么可不可以 先遍历 饼干,在遍历胃口呢?原创 2025-02-26 09:54:28 · 291 阅读 · 0 评论 -
贪心算法理论基础
做题的时候,只要想清楚 局部最优 是什么,如果推导出全局最优,其实就够了。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿?指定每次拿最大的,最终结果就是拿走最大数额的钱。如何验证可不可以用贪心算法呢?还有一种方法是数学证明。原创 2025-02-26 09:20:23 · 261 阅读 · 0 评论
分享