算法练习(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;
    }
}
相关推荐
夏鹏今天学习了吗1 小时前
【LeetCode热题100(78/100)】爬楼梯
算法·leetcode·职场和发展
记得开心一点嘛1 小时前
Redis封装类
java·redis
lkbhua莱克瓦241 小时前
进阶-存储过程3-存储函数
java·数据库·sql·mysql·数据库优化·视图
计算机程序设计小李同学1 小时前
基于SSM框架的动画制作及分享网站设计
java·前端·后端·学习·ssm
鱼跃鹰飞1 小时前
JMM 三大特性(原子性 / 可见性 / 有序性)面试精简版
java·jvm·面试
该怎么办呢2 小时前
基于cesium的三维不动产登记系统的设计与实现(毕业设计)
java·毕业设计
m0_748250032 小时前
C++ 信号处理
c++·算法·信号处理
Ro Jace2 小时前
电子侦察信号处理流程及常用算法
算法·信号处理
yuyanjingtao2 小时前
动态规划 背包 之 凑钱
c++·算法·青少年编程·动态规划·gesp·csp-j/s
J不A秃V头A2 小时前
多任务执行时,共享请求对象被并发修改
java