![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode-贪心算法
我是一名程序媛
这个作者很懒,什么都没留下…
展开
-
LeetCode 665 非递减数列
题目描述给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。题解本题求解时的问题在于,假设nums[i]<nums[i-1]时,改变的应该是nums[i]还是nums[i-1],应该尽量使前面的数小一些,这样更能满足题目的条件,所以使nums[i-1]变小是最佳的选.原创 2020-12-28 16:00:10 · 132 阅读 · 0 评论 -
LeetCode 406 根据身高重建队列
题目描述假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 hi ,前面 正好 有 ki 个身高大于或等于 hi 的人。请你重新构造并返回输入数组 people 所表示的队列。返回的队列应该格式化为数组 queue ,其中 queue[j] = [hj, kj] 是队列中第 j 个人的属性(queue[0] 是排在队列前面的人)。题解题目的意思是说要满足给定peop.原创 2020-12-28 15:46:55 · 115 阅读 · 0 评论 -
LeetCode 122 买卖股票的最佳时机 II
题目描述给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。题解贪心算法,只考虑相邻两天,只要赚钱就进行买卖。代码class Solution {public: int maxProfit(vector<int>& prices) { int n=price.原创 2020-12-28 11:40:09 · 77 阅读 · 0 评论 -
763 划分字母区间
题目描述字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。题解贪心策略代码class Solution {public: vector<int> partitionLabels(string S) { int n=S.size(); if (!n) return {}; int last[26]={0}; f.原创 2020-12-25 17:11:26 · 104 阅读 · 0 评论 -
LeetCode 452 用最少数量的箭引爆气球
题目描述在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤ xend,则该气球会被引爆。可以射出的弓箭的数量没有限制。 弓箭一旦被射出之后,可以无限地前进。我们想找到使得所有.原创 2020-12-24 16:11:18 · 143 阅读 · 1 评论 -
LeetCode 605 种花问题
题目描述假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花),和一个数 n 。能否在不打破种植规则的情况下种入 n 朵花?能则返回True,不能则返回False。题解贪心策略,将花尽可能的种在左边,留下来右边的位置尽可能大。代码class Solution {public: bool canPlaceFlowers(v.原创 2020-12-24 11:43:46 · 110 阅读 · 0 评论 -
LeetCode 435 无重叠区间
题目描述给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意:可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。题解使用贪心的策略,对该区间进行排序,从后往前看,要使得移除的区间数量最小,那么当前区间的左端点应该越大越好,这样左边剩余的空间越大,可以容纳更多的区间。代码class Solution {public: int eraseOverlapIntervals(vector<.原创 2020-12-23 19:10:05 · 86 阅读 · 0 评论 -
LeetCode 135 分发糖果
题目描述老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。你需要按照以下要求,帮助老师给这些孩子分发糖果:每个孩子至少分配到 1 个糖果。相邻的孩子中,评分高的孩子必须获得更多的糖果。那么这样下来,老师至少需要准备多少颗糖果呢题解使用贪心的方法,可参考该链接:https://leetcode-cn.com/problems/candy/solution/candy-cong-zuo-zhi-you-cong-you-zhi-zuo.原创 2020-12-23 18:59:07 · 147 阅读 · 0 评论 -
LeetCode 445 分发饼干
题目描述假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。题解使用贪心的策略,每次先用小饼干满足胃口小的孩子。代码class Solution {publi.原创 2020-12-23 18:37:41 · 113 阅读 · 0 评论