leetcode-candy
来源:互联网 发布:鸣人和佐助 知乎 编辑:程序博客网 时间:2024/06/06 15:45
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?
思路:
之前用暴力解法,超时。。。。参考网上Accepted解法:贪心法,先正序遍历,处理前一个小于后一个的情况,再逆序处理前一个大于后一个的情况(因为这种情况会导致更前面的分配到的candies发生变化,故逆序处理。),时间复杂度为o(n),空间复杂度o(n).
代码:
int candy(vector<int> &ratings) {
int len=ratings.size();
int res=0;
int *candyArray=new int[len];
for(int i=0; i<len; ++i)
{
candyArray[i]=1;
}
for(int i=0; i<len-1; ++i)
{
if(ratings[i]<ratings[i+1])
{
candyArray[i+1]=candyArray[i]+1;
}
}
int tmp=0;
for(int i=len-1; i>0; --i)
{
if(ratings[i] < ratings[i-1])
{
tmp=candyArray[i]+1;
if(candyArray[i-1]<tmp)
{
candyArray[i-1]=tmp;
}
}
}
for(int i=0; i<len; ++i)
{
res=res+candyArray[i];
}
return res;
}
- Leetcode: Candy
- LeetCode:Candy
- [leetcode]Candy
- Leetcode: Candy
- 【leetcode】Candy
- LeetCode:Candy
- [LeetCode] Candy
- [LeetCode]Candy
- [LeetCode] Candy
- 【LeetCode】Candy
- LeetCode | Candy
- Leetcode: Candy
- Candy - LeetCode
- leetcode Candy
- LeetCode Candy
- candy leetcode
- Candy -- LeetCode
- [LeetCode] Candy
- 回顾经典Effective C++ 1
- mysql常用优化参数
- 关于学习和工作的思考
- Images of Future AI
- ubuntu中vi上下左右键显示字母的解决办法
- leetcode-candy
- 模块计算机 X86 目标计算机X64 冲突
- 关于序列化:把某个对象序列化成字节流
- Android环境SDK Manager无法更新问题Connection to https://dl-ssl.google.com refused
- 深度探索linux操作系统系统构建和原理解析第三章
- 编辑文章 - 博客频道 - CSDN.NET
- 算法竞赛入门 7.1.3 分数拆分
- 比特币技术带我们走向蓝海
- 212