题解 | #分糖果问题#TOP95

import java.util.*;


public class Solution {
    /**
     * pick candy
     * @param arr int整型一维数组 the array
     * @return int整型
     */
    public int candy (int[] arr) {
        // write code here
        if(arr == null || arr.length == 0){
            return 0;
        }
        int len = arr.length;
        int[] temp = new int[len];
        //初始化
        for(int i = 0;i < len;i++){
            temp[i] = 1;
        }
        //从左到右 如果大于则递增+1,多拿一颗糖
        for(int i = 1;i< len;i++){
            if(arr[i] > arr[i-1]){
                temp[i] = temp[i-1] + 1;
            }
        }
        int result = temp[len - 1];
        for(int i = len - 2 ;i>=0 ;i--){
            //如果左边的数大,并且左边的糖果小
            if(arr[i] > arr[i+1] && temp[i] <= temp[i+1]){
                temp[i] = temp[i+1]+1;
            }
            result += temp[i];
        }
        return result;
        
    }
}
全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
双非坐过牢:非佬,可以啊10.28笔试,11.06评估11.11,11.12两面,11.19oc➕offer
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务