第十一周 leetcode 135. Candy(Hard)
来源:互联网 发布:数据库开发模式 编辑:程序博客网 时间:2024/06/06 02:09
题目描述:
There are N children standing in a line. Each child is assigned a rating value.
You are giving candies to these children subjected to the following requirements:
Each child must have at least one candy.
Children with a higher rating get more candies than their neighbors.
What is the minimum candies you must give?
解题思路:
这题我们用贪心算法,求出局部最优解,最后可以得到整体最优解。
1.与前面的邻居比较,前向遍历权重数组ratings,如果ratings[i]>ratings[i-1],则cost[i]=cost[i-1]+1;
2.与后面的邻居比较,后向遍历权重数组ratings,如果ratings[i]>ratings[i+1]且 cost[i]小于cost[i+1]+1,则更新cost,cost[i]=cost[i+1]+1;
3、对cost求和即为最少需要的糖果。
代码:
class Solution {public: int candy(vector<int>& ratings) { int n=ratings.size(); int cost[n]; for (int i = 0; i < n; i++) cost[i] = 1; // 向后遍历 for(int i = 1;i < n; i++) { if(ratings[i] > ratings[i-1]) cost[i] = cost[i-1] + 1; } // 向前遍历 int res = cost[n-1]; for(int i = n-2; i >= 0; i--) { if(ratings[i] > ratings[i+1] && cost[i] < cost[i+1]+1) cost[i] = cost[i+1] + 1; res += cost[i]; } return res; }};
代码运行结果:
阅读全文
0 0
- 第十一周 leetcode 135. Candy(Hard)
- 【LeetCode】135.Candy(hard)解题报告
- 【leetcode】 Candy (hard,pick one)
- [Leetcode 135, Hard] Candy
- Leetcode. 135 Candy(Hard)
- 135. Candy[hard]
- leetcode hard模式专杀之135. Candy
- Hard-题目34:135. Candy
- leetcode-python 第十一周
- leetcode-第十一周
- 第十一周LeetCode
- 第十一周LeetCode
- 第十一周LeetCode
- LeetCode题解 第十一周
- LeetCode 135. Candy(糖果)
- 第一周 leetcode 224. Basic Calculator(hard)
- 算法分析与设计丨第七周丨LeetCode(11)——Candy(Hard)
- 第十一周LeetCode算法题两道
- 14使用Gptransfer 迁移数据
- MySQLWorkbench 创建E-R图步骤
- 归并排序
- hbase 原代码分析 (10) region 创建过程
- Android常用控件
- 第十一周 leetcode 135. Candy(Hard)
- Jetbrains相关编译器的安装与Crack
- Remove Element
- win10安装GPU版tensorflow
- C++命名规范(参考google C++规范)
- redhat7上安装gitweb
- 结构型模式——适配器模式(Adapter Pattern)
- #WEBGIS#校园地图系统开发- 5、SLD专题介绍使用技巧
- (转)区块链上的股市:十年后传统股市还会存在吗?