贪心算法主要思想:保证局部最优解,总结果最优
问题类型一 分配问题
T455.Assign Cookies(Easy)
贪心策略:饥饿度最小的孩子最容易吃饱,所以我们按照孩子的饥饿度sort,把大于或者等于这个孩子饥饿度的,且大小最小的饼干给这个孩子。之后取剩下孩子中饥饿度最小的孩子,直到没有满足条件的饼干存在。
T135 Candy(Hard)
贪心策略:确保一个评分高的孩子拿到的糖果比左右两个孩子都多,我们分别从左到右、从右到左进行遍历。第一遍遍历右边的孩子评分低于左边的话,左边孩子的糖果为右边孩子糖果数+1,第二遍遍历取自己个儿糖果数和左边孩子糖果数中的最大值。要注意边界值。
问题类型二 区间问题
T435 Non-overlapping Intervals (Medium)
T605 Can Place Flowers (Easy)
T452 Minimum Number of Arrows to Burst Balloons (Medium)
以上三题的本质均为边界覆盖问题,根据实际情况大小按照左、右边界排序后将不同区间边界进行比较。
T.763 Partition Labels (Medium)
记录每个字母最开始出现的位置以及最后一次出现的位置,可以降低题目难度。
T.122 Best Time to Buy and Sell Stock Ⅱ (Medium)
T.406 Queue Reconstruction by Height (Medium)
T.665 Non-decreasing Array (Easy)
涉及到数组增长、减小趋势的贪心问题,可以在出现增减趋势的位置作文章。
学习项目:
https://github.com/changgyhub/leetcode_101/blob/master/LeetCode%20101%20-%20A%20LeetCode%20Grinding%20Guide%20(C%2B%2B%20Version).pdf