题解 | #牛奶供应问题#

牛奶供应问题

https://www.nowcoder.com/practice/8c66c9b7deea496193e609b70f39783d

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param taskDurations int整型一维数组 
     * @param capacity int整型 
     * @return int整型
     */
    public int animalTaskScheduler (int[] taskDurations, int capacity) {
        // write code here
        Queue<Integer> queue=new PriorityQueue<>();
        for(int i=0; i<taskDurations.length; i++){
            if(queue.size()<capacity){
                queue.add(taskDurations[i]);
            } else {
                int t=queue.poll();
                t+=taskDurations[i];
                queue.add(t);
            }
        }
        int res=0;
        while(!queue.isEmpty()){
            res=queue.poll();
        }
        return res;
    }
}

链接:https://www.nowcoder.com/questionTerminal/8c66c9b7deea496193e609b70f39783d?commentTags=Java链接:https://www.nowcoder.com/questionTerminal/8c66c9b7deea496193e609b70f39783d?commentTags=Java

来源:牛客网

第一次遇到这种题型,一开始我以为要用到排序,但是按照题目的示例一,不能对给定的任务排序,只能按照任务给定的顺序去调度。如果经过排序,可以找到更短的调度时间。

使用模拟和贪心的方法找到最短的调度时间。

遍历所有任务,用优先队列保存调度的时间,然后在队列的容量不超过capacity时,把当前的任务加到优先队列中,当优先队列的容量超过capacity时,就把队列中用时最短的一个任务找出来,用 t 保存这个最短的任务,然后 t = t + taskDurations[i] 保存当前任务和新任务的时间,可以理解为从当前的优先队列里面拿出一个用时最短的任务,这个任务做完了还有多余的时间来做其他的任务,所以需要从taskDurations里面取一个任务跟在当前 t 任务的后面,并且加到优先队列中,遍历完taskDurations,遍历优先队列,找到用时最长的任务即为结果。

全部评论

相关推荐

10-10 16:30
济宁学院 Java
一表renzha:面试官:蓝桥杯三等奖?你多去两次厕所都能拿二等吧
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
正在热议
更多
# 你的mentor是什么样的人? #
4503次浏览 33人参与
# 你觉得mentor喜欢什么样的实习生 #
10715次浏览 297人参与
# 智慧芽求职进展汇总 #
25936次浏览 110人参与
# 帮我看看,领导说这话什么意思? #
6647次浏览 26人参与
# 26届秋招公司红黑榜 #
13171次浏览 44人参与
# 怎么给家人解释你的工作? #
1646次浏览 17人参与
# 未岚大陆求职进展汇总 #
38145次浏览 114人参与
# 没有家庭托举的我是怎么找工作的 #
12676次浏览 160人参与
# 求职低谷期你是怎么度过的 #
5423次浏览 96人参与
# 实习必须要去大厂吗? #
146833次浏览 1542人参与
# 从哪些方向判断这个offer值不值得去? #
6777次浏览 95人参与
# 同bg的你秋招战况如何? #
158879次浏览 927人参与
# 度小满求职进展汇总 #
10221次浏览 53人参与
# 校招泡的最久的公司是哪家? #
4840次浏览 23人参与
# 面试紧张时你会有什么表现? #
1802次浏览 21人参与
# 你有哪些缓解焦虑的方法? #
37205次浏览 835人参与
# 你喜欢工作还是上学 #
77620次浏览 860人参与
# 入职第一天,你准备什么时候下班 #
85519次浏览 467人参与
# 秋招想进国企该如何准备 #
97750次浏览 487人参与
# 简历无回复,你会继续海投还是优化再投? #
103620次浏览 819人参与
# 机械人的工作环境真的很差吗 #
25086次浏览 119人参与
# 独居后,你的生活是更好了还是更差了? #
28154次浏览 263人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务