问题
https://leetcode.com/problems/candy/
解法
class Solution {
public:
int candy(vector<int>& ratings) {
if (ratings.size() < 2)
return ratings.size();
vector<int> num(ratings.size(), 1);
for (int i=1; i< ratings.size(); ++i)
if (ratings[i] > ratings[i-1])
num[i] = num[i-1]+1;
for (int i=ratings.size()-2; i>=0; --i)
if (ratings[i] > ratings[i+1])
num[i] = max(num[i], num[i+1]+1);
int ret =0;
for (int i=0; i< ratings.size(); ++i)
ret += num[i];
return ret;
}
};
本文提供了一种解决LeetCode上经典糖果分配问题的有效算法。通过双向遍历的方法,确保每位评分更高的孩子至少得到比邻近孩子多一颗糖果,最终求得最小糖果数。
5万+

被折叠的 条评论
为什么被折叠?



