leetcode - 135. 分发糖果
题目
代码
#include
#include
using namespace std;
// 1:ratings[i] > ratings[i-1] 从左往右
// 2: ratings[i] > ratings[i+1] 从右往左
int candy(vector& ratings) {
int n = ratings.size();
if(n == 1){
return 1;
}
int pre, cur;
int count = 0;
vector left(n);
if(ratings[0] > ratings[1]){
pre = 2;
}else{
pre = 1;
}
left[0] = pre;
for(int i = 1; i < n; i++){
if(ratings[i] > ratings[i-1]){
cur = pre + 1;
}else{
cur = 1;
}
pre = cur;
left[i] = pre;
}
if(ratings[n-1] > ratings[n-2]){
pre = 2;
}else{
pre = 1;
}
count += max(pre, left[n-1]);
for(int i = n - 2; i >= 0; i--){
if(ratings[i] > ratings[i+1]){
cur = pre + 1;
}else{
cur = 1;
}
pre = cur;
count += max(pre, left[i]);
}
return count;
}
int main(){
int n, res;
cin>>n;
vector ratings(n);
for(int i = 0; i < n; i++){
cin>>ratings[i];
}
res = candy(ratings);
cout<