题解 | #分糖果问题#
分糖果问题
http://www.nowcoder.com/practice/76039109dd0b47e994c08d8319faa352
- 本人没那么聪明,用的笨办法,我也很烦,但总归是写出来了,我就分享一下。
- 写这种题,先要比较前后的大小,根据前后大小判断哪个先加
- 【数组下标定位的这个设为arr[i]】
- 我们先比较arr[i]和arr[i+1]的大小,判断哪个需要加
- 然后比较arr[i]和arr[i-1]的大小,判断哪个需要加
- 加起来以后求总和就行了
```class Solution {
public:
/**
* pick candy
* @param arr int整型vector the array
* @return int整型
*/
int candy(vector<int>& arr) {
// write code here
int count=0;
if(arr.size()==0)return 0;
vector<int>num;
for(int i=0;i<arr.size();i++){
num.push_back(1);
}
for(int i=0;i<arr.size()-1;++i){
if(arr[i]>arr[i+1])num[i]=num[i+1]+1;
else if(arr[i]<arr[i+1])num[i+1]=num[i]+1;
}
for(int i=arr.size()-1;i>0;--i){
if(arr[i-1]>arr[i])num[i-1]=num[i]+1;
else if(arr[i-1]<arr[i]&&num[i]<=num[i-1])num[i]=num[i-1]+1;
}
for(int i=0;i<arr.size();i++){
count+=num[i];
}
return count;
}
};


