【数组】分糖果问题

求解代码

java 复制代码
public int candy(int[] arr) {
        if (arr == null || arr.length == 0) {
            return 0;
        }

        int n = arr.length;
        int[] candyCount = new int[n]; // 定义数组记录每个孩子最终应分得的糖果数
        int ans = 0; // 统计分发糖果的总数量

        // 每个孩子至少分得1颗糖果
        for(int i=0;i<arr.length;i++){
            candyCount[i]=1;
        }

        // 从左到右遍历数组,保证相邻孩子中,右侧评分更高的孩子糖果数多于左侧
        for(int i=1;i<n;i++){
            if(arr[i] > arr[i-1]){
                candyCount[i] = candyCount[i-1] + 1;
            }
        }

        // 从右到左遍历数组,保证相邻孩子中,左侧评分更高的孩子糖果数多于右侧
        for(int i=n-2;i>=0;i--){
            if(arr[i] > arr[i+1] && candyCount[i] <= candyCount[i+1]){
                candyCount[i] = candyCount[i+1] + 1;
            }
        }

        // 累加所有孩子的糖果数,得到分发的总数量
        for (int i = 0; i < n; i++) {
            ans += candyCount[i];
        }
        // 返回总糖果数
        return ans;
    }
相关推荐
小羊没烦恼!2 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
倒头就睡的小比特2 天前
算法竞赛C++常用的STL
c++·算法
俊昭喜喜里2 天前
java中的继承和多态的区别
java
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
譕痕2 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖2 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时2 天前
01-06-A-JVM排查实战详解
java·jvm
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
猎头南楼2 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习