135. 分发糖果

class Solution {
    public int candy(int[] ratings) {
        int n = ratings.length;
        int[] arr = new int[n];
        Arrays.fill(arr,1); // 先每人分一个
        for(int i = 1; i < n; i++) { // 从左到右分当前分数大于前一个就变为前一个加一
            if(ratings[i] > ratings[i-1]) arr[i] = arr[i-1] + 1;
        }
        int res = arr[n-1];
        for(int i = n - 2; i >= 0; i--) {// 从右到左分,当前分数大于后一个,且当前拿到的糖比后一个少就变为后一个加一
            if(ratings[i] > ratings[i+1] && arr[i] <= arr[i+1]) arr[i] = arr[i+1] + 1;
            res += arr[i];
        }   
        return res;
    }
}
原文地址:https://www.cnblogs.com/yonezu/p/13373242.html