贪心算法
empty__barrel
这个作者很懒,什么都没留下…
展开
-
力扣:714. 买卖股票的最佳时机含手续费
我们遍历整个过程,遍历到1,我们选择买入,此时买入的是3,遍历到4按常理来说此时的4大于3所以我们选择卖出。答案是【1,8】那么我们对3是不进行操作的,但是按常理来说我们应该入3,然后8的时候卖出啊。此时假如我们3买入,那么肯定有一个地方是卖出的我们设这个位置的值为x。此时我们分别计算一下3不买入和3买入所获得的利益。同时当我们遍历到一个值且已经有一个卖出的值后,我们可以判断此值是否比卖出的那天价格更高,若更高则。所以当我们遍历到一个值且已经有一个卖出的值后,我们可以通过①判断方法来看是否应该在这天买入。.原创 2022-07-31 12:51:09 · 98 阅读 · 0 评论 -
力扣:738.单调递增的数字
给定一个非负整数N,找出小于或等于N的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字x和y满足x原创 2022-07-29 14:55:55 · 123 阅读 · 0 评论 -
763.划分字母区间——之打开新世界
在脑海中想象出由一个个动态字符构成的字符串,将其划分为三个片段,第一个片段的起始值是第一个值,末尾值是这个片段中间的某个值的end,第二个片段的起始值是上个片段的end+1对应的那个值,end是这个片段中间的某个值的end,第三个片段类似。字符串S由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。【17,20】,【18,23】,【19,24】合并成【17,24】【1,9】,【2,6】,【5,8】合并成【1,9】【10,15】,【11,16】合并成【10,16】...原创 2022-07-29 13:48:31 · 57 阅读 · 0 评论 -
力扣:56. 合并区间
代码】力扣56.合并区间。原创 2022-07-27 11:51:49 · 305 阅读 · 0 评论 -
435. 无重叠区间
给定一个区间的集合intervals,其中intervals[i]=[starti,endi]。返回需要移除区间的最小数量,使剩余区间互不重叠。原创 2022-07-27 13:31:33 · 101 阅读 · 0 评论 -
452. 用最少数量的箭引爆气球
452. 用最少数量的箭引爆气球原创 2022-07-14 10:33:31 · 124 阅读 · 0 评论 -
贪心第二周总结
贪心算法题目中的动态规划暂时先不理解。了解力扣:122.买卖股票的最佳时机II最终股票可以分为每天股票的和。每天股票都是正值,最终股票最大。例:第二天买入,第五天卖出去。prices[5]-prices[2] = -prices[2]+prices[3]-prices[3]+prices[4]-prices[4]+prices[5]-prices[2]+prices[3]:可理解为第二天的利润。那么总体看来就是第2,3,4天的利润和。每天股票都是正值,最终股票最大。...原创 2022-05-28 23:31:57 · 55 阅读 · 0 评论 -
贪心第一周总结
贪心算法无非就是看脑子灵不灵活。一:力扣:376. 摆动序列如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最原创 2022-05-23 14:48:54 · 54 阅读 · 0 评论 -
贪心算法-总概
贪心的本质是选择每一阶段的局部最优,从而达到全局最优。不好意思了,贪心没有套路,说白了就是常识性推导加上举反例。举反例或者数学证明验证可否使用贪心算法?如果想不到反例,那么就试一试贪心吧。数学证明,有如下两种方法:1.数学归纳法2.反证法贪心一般解题步骤贪心算法一般分为如下四步:1.将问题分解为若干个子问题2.找出适合的贪心策略3.求解每一个子问题的最优解4.将局部最优解堆叠成全局最优解因为贪心的题目往往还和其他方面的知识混在一起。......原创 2022-05-21 21:58:49 · 135 阅读 · 0 评论 -
贪心算法。力扣:53. 最大子序和
代码随想录力扣:53. 最大子序和题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。思路:依次遍历数值,同时添加当前数值到count,当count值大于result时修改result,同时当count <= 0时,再加上下一个数值count只会越来越小,所以此时将count设为0。代码:class Solution {public: int maxSubArray(vector<原创 2022-04-08 23:26:33 · 157 阅读 · 0 评论 -
贪心算法。力扣:376. 摆动序列
力扣:376. 摆动序列代码随想录题目:如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的。相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为原创 2022-04-08 23:04:49 · 290 阅读 · 0 评论 -
贪心算法。分发饼干
代码随想录力扣:455.分发饼干题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。class Solution {public: int findContentChil原创 2022-04-08 22:34:50 · 202 阅读 · 0 评论 -
贪心算法解析
原文:代码随想录贪心的本质:是选择每一阶段的局部最优,从而达到全局最优。这么说有点抽象,来举一个例子:例如:有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿?指定每次拿最大的,最终结果就是拿走最大数额的钱。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。再举一个例子:如果是 有一堆盒子,你有一个背包体积为n,如何把背包尽可能装满,如果还每次选最大的盒子,就不行了。这时候就需要动态规划。动态规划的问题在下一个系列会详细讲解。此时的参数有放入盒子的个数,盒子的大小。这个原创 2022-04-08 22:20:14 · 310 阅读 · 0 评论