算法分析与设计丨第七周丨LeetCode(11)——Candy(Hard)
2017-10-18 19:40
323 查看
贪心算法
题目链接:https://leetcode.com/problems/candy/description/
这道题目主要是思路,有了思路便很好办了。之前我始终不太理解贪心算法究竟是什么意思,然后思考一番加做题后发现其实是利用局部的资源最优来判断,比如说这道题目的比左右两边ratings高的candy更多,Kruskal算法的始终取不构成回环的权值最小边,都是贪心算法的体现
题目链接:https://leetcode.com/problems/candy/description/
这道题目主要是思路,有了思路便很好办了。之前我始终不太理解贪心算法究竟是什么意思,然后思考一番加做题后发现其实是利用局部的资源最优来判断,比如说这道题目的比左右两边ratings高的candy更多,Kruskal算法的始终取不构成回环的权值最小边,都是贪心算法的体现
class Solution { public: int candy(vector<int>& ratings) { vector<int> candy(ratings.size(),1); int num = 0; for(int i = 0;i<candy.size()-1;++i) { if(ratings[i+1]>ratings[i]) candy[i+1] = candy[i] + 1; } for(int i = candy.size()-1;i>0;--i) { if(ratings[i-1]>ratings[i]) candy[i-1] = max(candy[i]+1,candy[i-1]); } for(int i = 0;i<candy.size();++i) num += candy[i]; return num; } };
相关文章推荐
- 算法分析与设计-11-最长递增子序列的动态规划算法
- 算法分析与设计课程07——330. Patching Array(Hard)
- 算法分析与设计第七周
- 算法分析与设计第七周:134. Gas Station
- 算法分析与设计课程(11):【leetcode】Gray Code
- 算法分析与设计丨第十八周丨LeetCode(21)——Binary Tree Maximum Path Sum(Hard)
- 算法分析与设计丨第四周丨LeetCode(8)——Binary Tree Level Order Traversal(Medium)
- 算法分析与设计课程作业第七周#1#2
- 算法分析与设计课程05——514. Freedom Trail(Hard)
- 算法分析与设计week11--744. Find Smallest Letter Greater Than Target
- 算法分析与设计丨第十周丨LeetCode(14)——Edit distance(Hard)
- 算法分析与设计丨第三周丨LeetCode(5)——Median of Two Sorted Arrays(Hard)
- 第七周算法分析与设计:ZigZag Conversion
- 算法分析与设计课程03——Expression Add Operators(Hard)
- 算法分析与设计丨第四周丨LeetCode(7)——Find Bottom Left Tree Value(Medium)
- 算法分析与设计——LeetCode Problem.653 Two Sum IV - Input is a BST
- 算法设计与分析 0-1背包的多种求法
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- 第四周算法分析与设计:Swap Nodes in Pairs
- 算法分析与设计2017-1-棋盘覆盖问题算法