您的位置:首页 > 其它

135. Candy

2017-11-21 10:47 155 查看
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,
逆序遍历,取最大的

c++版本:
class Solution {
public:
int candy(vector<int>& ratings) {
if(ratings.size()<=1)
return ratings.size();
vector<int> nums(ratings.size(),1);
for(int i=1;i<nums.size();i++)
if(ratings[i]>ratings[i-1])
nums[i]=nums[i-1]+1;
for(int i=nums.size()-1;i>=1;i--)
if(ratings[i-1]>ratings[i])
nums[i-1]=max(nums[i]+1,nums[i-1]);
int sum=0;
for(int num:nums)
sum+=num;
return sum;
}
};

python3版本:
class Solution:
def candy(self, ratings):
"""
:type ratings: List[int]
:rtype: int
"""
res=[1]*len(ratings)
lbase=rbase=1
for i in range(1,len(ratings)):
lbase=lbase+1 if ratings[i]>ratings[i-1] else 1
res[i]=lbase
for i in range(len(ratings)-2,-1,-1):
rbase=rbase+1 if ratings[i]>ratings[i+1] else 1
res[i]=max(res[i],rbase)
return sum(res)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: