您的位置:首页 > 其它

[LeetCode] Candy

2014-04-02 21:48 148 查看
int candySolution(vector<int> &ratings)
{
if(ratings.empty()) return 0;
int n = ratings.size();

vector<int> candyNum(n);
//这里不能用for(auto x:candyNum) x=1;这样无法修改candyNum的值的。
for(int i=0; i<n; i++)
{
candyNum[i] = 1;
}

for(int i=1; i<n; i++)
{
if(ratings[i-1]<ratings[i])
candyNum[i] = candyNum[i-1]+1;
}
//应付权值诸如 1 3 4 2 1 3这样的例子
//正确的分配结果应该是1 2 3 2 1 2
for(int i=n-2; i>=0; i--)
{
if(ratings[i+1]<ratings[i] && candyNum[i]<(candyNum[i+1]+1))
candyNum[i] = candyNum[i+1]+1;
}

int sum = 0;
for(int i=0; i<n; i++)
sum += candyNum[i];

return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: