candy(动态规划)
2024-10-11 06:44:19
题目描述
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?
题意:n 个小孩,每个小孩有一个评分。给小孩发糖。要求:
1)每个小孩至少一颗糖
2)评分高的小孩发的糖比他旁边两个小孩的多
因此最少需要多少糖果才够分?
解题思路:
遍历两边,首先每个人得一块糖,第一遍从左到右,若当前点比前一个点高就比前者多一块。
这样保证了在一个方向上满足了要求。第二遍从右往左,若左右两点,左侧高于右侧,但
左侧的糖果数不多于右侧,则左侧糖果数等于右侧糖果数+1,这就保证了另一个方向上满足要求。
最后将各个位置的糖果数累加起来就可以了。
代码实现:
class Solution {
public:
int candy(vector<int> &ratings) {
int n=ratings.size();
//candy set
vector<int>Candy(n,);
//from left to right
for(int i();i<n-;i++){
if(ratings[i+]>ratings[i])
Candy[i+]=Candy[i]+;
}
//from right to left
for(int j=n-;j>;j--){
if(ratings[j-]>ratings[j]&&Candy[j-]<=Candy[j])
Candy[j-]=Candy[j]+;
}
//add all
int sum();
for(auto a:Candy)
sum+=a;
return sum;
}
};
最新文章
- zeptojs-跑马灯效果
- Xamarin.IOS之快速入门
- WordCount的程序设计没写出来怎么办
- 【caffe-windows】 caffe-master 之 matlab接口配置
- linq to entity 获取项的集合总数
- (29)odoo的可用小图标
- Cv运动分析与对象跟踪(转)
- 自己的php函数库
- c语言中static 用法总结(转)
- poj 2782 Bin Packing (贪心+二分)
- EF中的TPH、TPT、TPC
- Codeforces 482 - Diverse Permutation 构造题
- Endnote从头开始五:修改output style(转载)
- 一点一滴完全突破KAZE特征检测算法,从各向异性扩散滤波开始(1)
- angular 实战系列 之 mvvm模式
- XCode工程内多Targets
- PLSQL DEVELOPER编辑器的自动替换文件
- 二、tcp/ip基础知识
- 利用堆实现堆排序&;amp;优先队列
- 【iOS XMPP】使用XMPPFramewok(二):用户登录