算法练习(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;
    }
}
相关推荐
2201_757830874 分钟前
泛型的细节
java·开发语言·数据结构
一 乐13 分钟前
远程在线诊疗|在线诊疗|基于java和小程序的在线诊疗系统小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·小程序
缺点内向15 分钟前
Java:高效删除Excel中的空白行和列
java·开发语言·excel
pkowner22 分钟前
若依使用技巧
java
leoufung24 分钟前
贪心算法理论与应用——以股票买卖问题为例
算法·贪心算法
静若繁花_jingjing27 分钟前
DDD领域驱动设计实践_保险
java·开发语言
serendipity_hky29 分钟前
【微服务 - easy视频 | day04】Seata解决分布式事务
java·spring boot·分布式·spring cloud·微服务·架构
沿着路走到底34 分钟前
python 判断与循环
java·前端·python
墨雪不会编程1 小时前
数据结构—排序算法篇三
数据结构·算法·排序算法