思路
这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右边,如果两边一起考虑一定会顾此失彼。【是的,我就是左右混乱了】
简单来说,因为相邻两个孩子得分高的一定会获得更多糖果,这里分左右两边来看,也就是说 左规则【从左向右遍历】和右规则【从右向左遍历】都要成立,所以最后是取两个规则结果的最大值。
var candy = function(ratings) {let candy =new Array(ratings.length).fill(1);//先每人分一个for(let i =1;i<ratings.length;i++){if(ratings[i]>ratings[i-1]){//大于左边,则比左边多一个【左规则】candy[i] =candy[i-1]+1;}}for(let i=ratings.length-2;i>=0;i--){if(ratings[i]>ratings[i+1]){candy[i] =Math.max(candy[i],candy[i+1]+1);//比较当前自身的值和右边+1谁更大。【更大才能满足左右两个规则】}}return candy.reduce((a,b)=>{return a+b;})};

