数据结构之贪心算法

Posted COCO_PEAK_NOODLE

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构之贪心算法相关的知识,希望对你有一定的参考价值。

以下内容为作者高畅所有

2.1 算法解释

顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最
后得到的结果是全局最优的。
举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹
果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的
贪心策略为,每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全
局结果是局部结果的简单求和,且局部结果互不相干,因此局部最优的策略也同样是全局最优的
策略。

2.2 分配问题

:题目描述
有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃
最多一个饼干,且只有饼干的大小大于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩
子可以吃饱。
:输入输出样例
输入两个数组,分别代表孩子的饥饿度和饼干的大小。输出最多有多少孩子可以吃饱的数
量。
Input: [1,2], [1,2,3]
Output: 2

2.3 区间问题

:题目描述
给定多个区间,计算让这些区间互不重叠所需要移除区间的最少个数。起止相连不算重叠。
:输入输出样例
输入是一个数组,数组由多个长度固定为 2 的数组组成,表示区间的开始和结尾。输出一个
整数,表示需要移除的区间数量。
Input: [[1,2], [2,4], [1,3]]
Output: 1

解法的关键:找到贪心的点在哪里?有点逻辑思维的算法题

以上是关于数据结构之贪心算法的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法之深入解析“贪心算法“的原理解析和算法实现

C++ 算法主题系列之贪心算法的贪心之术

算法讲解之贪心算法1

五大常用算法之贪心算法

leetcode之贪心算法刷题总结3

leetcode之贪心算法刷题总结2