文章目录
贪心的定义和思想
贪心是一种算法思想,其含义是在求解过程中每一步总是做出当前的最优选择。贪心思想不考虑全局最优,只考虑局部最优。
贪心思想在之前已经有所涉及,哈夫曼树的构建就是基于贪心的思想,图算法中的单源最短路径和最小生成树也是基于贪心的思想。
由于贪心思想为只考虑局部最优,因此使用贪心策略得到的结果不一定是全局最优解。
贪心问题的求解思路为,将问题分解成多个子问题,对于每个子问题得到局部最优解,将子问题的局部最优解合成原始问题的解。
贪心的要素
贪心的要素有两点,一是贪心选择性质,二是最优子结构性质。
贪心选择性质的含义是问题的全局最优解可以通过贪心选择达到,每次贪心选择都得到局部最优解,并将问题简化成规模更小的子问题。
最优子结构性质的含义是问题的最优解包含子问题的最优解。
只有当问题具备贪心的要素时才能使用贪心策略得到最优解。使用贪心策略时,需要证明贪心策略可以得到全局最优解,即问题具有贪心选择性质和最优子结构性质,证明的思路是不使用贪心策略时不可能得到更优解。
贪心的优点和缺点
贪心的优点是实现较为简单,且时间复杂度通常较低。当数据规模较大时,使用贪心策略可以在较短的时间内得到答案。
贪心的缺点是不能确保得到全局最优解,当局部最优策略与全局最优策略不一致时,使用贪心策略得到的解一般不是全局最优解。
目录
- 贪心题目:和有限的最长子序列
- 贪心题目:非递增顺序的最小子序列
- 贪心题目:数组大小减半
- 贪心题目:玩筹码
- 贪心题目:种花问题
- 贪心题目:保持城市天际线
- 贪心题目:分割平衡字符串
- 贪心题目:卡车上的最大单元数
- 贪心题目:数组拆分
- 贪心题目:三角形的最大周长
- 贪心题目:K 次取反后最大化的数组和
- 贪心题目:柠檬水找零
- 贪心题目:分发饼干
- 贪心题目:运动员和训练师的最大匹配数
- 贪心题目:优势洗牌
- 贪心题目:递减元素使数组呈锯齿状
- 贪心题目:划分字母区间
- 贪心题目:交换字符使得字符串相同
- 贪心题目:令牌放置
- 贪心题目:两地调度
- 贪心题目:最少的后缀翻转次数
- 贪心题目:不含 AAA 或 BBB 的字符串
- 贪心题目:具有给定数值的最小字符串
- 贪心题目:十-二进制数的最少数目
- 贪心题目:坏了的计算器
- 贪心题目:得到目标值的最少行动次数
- 贪心题目:使绳子变成彩色的最短时间
- 贪心题目:所有排列中的最大和
- 贪心题目:翻转矩阵后的得分
- 贪心题目:字符频次唯一的最小删除次数
- 贪心题目:构造 K 个回文字符串
- 贪心题目:单调递增的数字
- 贪心题目:行相等的最少多米诺旋转
- 贪心题目:删除子字符串的最大得分
- 贪心题目:Dota2 参议院
- 贪心题目:救生艇
- 贪心题目:受标签影响的最大值
- 贪心题目:交换一次的先前排列
- 贪心题目:最多能完成排序的块
- 贪心题目:安排工作以达到最大收益
- 贪心题目:需要教语言的最少人数
- 贪心题目:给定行和列的和求可行矩阵
- 贪心题目:加油站
- 贪心题目:分发糖果
- 贪心题目:最大数
- 贪心题目:和为 K 的最少斐波那契数字数目
- 贪心题目:得到目标数组的最少函数调用次数
- 贪心题目:和为目标值且不重叠的非空子数组的最大数目
- 贪心题目:用最少数量的箭引爆气球
- 贪心题目:任务调度器
- 贪心题目:可以到达的最远建筑
- 贪心题目:吃苹果的最大数目
- 贪心题目:重构 2 行二进制矩阵
- 贪心题目:最长快乐字符串
- 贪心题目:无重叠区间
- 贪心题目:形成目标数组的子数组最少增加次数
- 贪心题目:青蛙过河 II
- 贪心题目:分割数组为连续子序列
- 贪心题目:排布二进制网格的最少交换次数
- 贪心题目:IPO
- 贪心题目:最小区间
- 贪心题目:最多可以参加的会议数目
- 贪心题目:最大的团队表现值
- 贪心题目:距离相等的条形码
- 贪心题目:重构字符串
- 贪心题目:避免洪水泛滥
- 贪心题目:最多能完成排序的块 II
- 贪心题目:修改后的最大二进制字符串
- 贪心题目:按要求补齐数组
- 贪心题目:超级洗衣机
- 贪心题目:设置交集大小至少为 2
- 贪心题目:雇佣 K 名工人的最低成本
- 贪心题目:完成所有任务的最少初始能量
- 贪心题目:完成所有交易的初始最少钱数
- 贪心题目:翻转子数组得到最大的数组值
- 贪心题目:让数组不相等的最小总代价
- 贪心题目:强密码检验器