贪心算法—LeetCode135.分发糖果
首先,为大家介绍一下贪心算法的核心思想:保证每次操作都是局部最优,从而使最终得到的结果最优。这种结果并不是必然的,但是往往是正确的,原因是:在很多的情况中,全局最优即为局部最优的简单求和。
接下来以leetcode中的一道题目为例:
题目描述:
n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。
你需要按照以下要求,给这些孩子分发糖果:
每个孩子至少分配到 1 个糖果。相邻两个孩子评分更高的孩子会获得更多的糖果。
请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目 。
题目给出的条件非常明确,我们已有的信息就是ratings数组,而需要达到的要求有两个:
1、每个孩子分有一个糖果
2、相邻两个孩子评分更高的孩子会获得更多的苹果
我一直比较提倡的是先理清整个思路、确定算法的可行性之后,再开始操作,但在这里为了方便对应相关代码,我直接将最终思路写在这里了,但我还是建议大家先理清思路后,再开始操作,可以省去很多不必要的麻烦。
接下来,我们对题目进行分析:
第一个条
共有 0 条评论