算法练习(10):牛客在线编程10 贪心算法

java 复制代码
package jz.bm;

import java.util.ArrayList;
import java.util.Arrays;

public class bm10 {
    /**
     * BM95 分糖果问题
     */
    public int candy (int[] arr) {
        int res = 0;
        int n = arr.length;
        int[] nums = new int[n];
        //每个人都分配一个糖果
        for (int i = 0; i < n; i++) {
            nums[i] = 1;
        }
        //从左到右递增则加1
        for (int i = 1; i < n; i++) {
            if (arr[i] > arr[i - 1]) {
                nums[i] = nums[i - 1] + 1;
            }
        }
        res = nums[n - 1];
        //从右到左增加则加1
        for (int i = n - 2; i >= 0; i--) {
            if (arr[i] > arr[i + 1] && nums[i] <= nums[i + 1]) {
                nums[i] = nums[i + 1] + 1;
            }
            res += nums[i];
        }
        return res;
    }

    /**
     * BM96 主持人调度(二)
     */
    public int minmumNumberOfHost (int n, int[][] startEnd) {
        int[] start = new int[n];
        int[] end = new int[n];
        for (int i = 0; i < n; i++) {
            start[i] = startEnd[i][0];
            end[i] = startEnd[i][1];
        }
        Arrays.sort(start);
        Arrays.sort(end);
        int res = 0;
        int j = 0;
        for (int i = 0; i < n; i++) {
            //新开始的节目大于上一轮结束的时间,主持人不变
            if (start[i] >= end[j]) {
                j++;
            } else
                res++;
        }
        return res;
    }
}
相关推荐
Zachery Pole11 分钟前
CCF-CSP备战NO.6【栈】
算法·深度优先
唠点键盘之外的16 分钟前
10 Spring Boot + 大模型:Java 项目接入 AI 的三种姿势
java·spring boot·aigc·cursor
NWU_LK17 分钟前
【WebFlux】第五篇 —— 两种编程模型与 WebClient
java
增量星球18 分钟前
《持续交付2.0系列六》业务需求协作管理
java·运维·自动化·devops·持续部署·持续集成
LJHclasstore_luo22 分钟前
【C++题解】112354.平行时空
数据结构·c++·算法
重生之我是Java开发战士34 分钟前
【Java EE】Spring IoC 与 DI
java·spring·java-ee
SimonKing1 小时前
阿里要求全员卸载 Claude Code:事件始末与深层逻辑
java·后端·程序员
云烟成雨TD1 小时前
Agent Scope Java 2.x 系列【42】2.0 GA 正式发布:从透明开发迈向智能体系统工程
java·人工智能·agent
猫猫不是喵喵.1 小时前
SpringBoot自动装配原理
java·spring boot·后端
刘小八1 小时前
Redis 缓存一致性:一文讲透延时双删原理、并发时序
java·数据库·redis·缓存