算法练习(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;
    }
}
相关推荐
事圆则缓9 分钟前
Java I/O、文件与 Android 存储
java
wno70415 分钟前
Spring Security基础使用
java·后端·spring
番茄巴士22 分钟前
手写一个 mini HashMap,彻底搞懂哈希表原理
算法
宣宣猪的小花园.1 小时前
【机器学习】过拟合与泛化:模型为什么会“刷题很强、实战失灵”
人工智能·算法·机器学习
INGNIGHT1 小时前
624.数组列表中的最大距离(maximum)
算法·散列表
小蒜学长1 小时前
基于RFID技术的仓储管理系统设计(代码+数据库+LW)
java·数据库·spring boot·后端·rfid技术·仓储管理
Niuguangshuo1 小时前
论文解读:w2v-BERT,把 wav2vec 2.0 和 BERT 合成一根管子的语音 SSL
算法·音视频·语音识别
梦影_1 小时前
Langchain简单快速上手教程(五)——聊天模型之流式传输
java·数据库·人工智能·python·langchain
科技小E1 小时前
国标视频分析平台EasyGBS×自动化AI算法训练服务器DLTM,把通用AI炼成你的现场AI
算法·自动化·音视频
zander2581 小时前
LeetCode 15. 三数之和
算法