• JavaScript算法44- 最小处理时间(leetCode:2895middle)周赛


    2895. 最小处理时间

    一、题目

    你有 n处理器,每颗处理器都有 4 个核心。现有 n * 4 个待执行任务,每个核心只执行 一个 任务。

    给你一个下标从 0 开始的整数数组 processorTime ,表示每颗处理器最早空闲时间。另给你一个下标从 0 开始的整数数组tasks,表示执行每个任务所需的时间。返回所有任务都执行完毕需要的 最小时间

    注意:每个核心独立执行任务。

    示例

    输入:processorTime = [8,10], tasks = [2,2,3,1,8,7,4,5]
    输出:16
    解释:
    最优的方案是将下标为 4, 5, 6, 7 的任务分配给第一颗处理器(最早空闲时间 time = 8),下标为 0, 1, 2, 3 的任务分配给第二颗处理器(最早空闲时间 time = 10)。 
    第一颗处理器执行完所有任务需要花费的时间 = max(8 + 8, 8 + 7, 8 + 4, 8 + 5) = 16 。
    第二颗处理器执行完所有任务需要花费的时间 = max(10 + 2, 10 + 2, 10 + 3, 10 + 1) = 13 。
    因此,可以证明执行完所有任务需要花费的最小时间是 16 。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    提示:

    • 1 <= n == processorTime.length <= 25000
    • 1 <= tasks.length <= 105
    • 0 <= processorTime[i] <= 109
    • 1 <= tasks[i] <= 109
    • tasks.length == 4 * n

    二、题解

    思路:最早空闲时间越大的处理器,处理 tasks越小的任务

    /**
     * @param {number[]} processorTime
     * @param {number[]} tasks
     * @return {number}
     */
    var minProcessingTime = function(processorTime, tasks) {
      // 升序
      processorTime.sort((a,b) => a -b);
      // 降序
      tasks.sort((a,b) => b-a);
      processorTime.forEach((val,i) => {
        let needTime = val + tasks[i*4];
        if(needTime > res){
          res = needTime;
        }
      })
      return res;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    此处可用Math.max()替代

        if(needTime > res){
          res = needTime;
        }
    
    • 1
    • 2
    • 3

    优化后

    var minProcessingTime = function(processorTime, tasks) {
      // 升序
      processorTime.sort((a,b) => a -b);
      // 降序
      tasks.sort((a,b) => b-a);
      processorTime.forEach((val,i) => {
        res = Math.max(res,val + tasks[i*4])
      })
      return res;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    Zookeeper分布式一致性协议ZAB源码剖析
    慢跑是早上跑好,还是晚上跑好?对的时间跑,效果可能还翻倍
    如何让 Go 反射变快,你学会了吗?
    HCIP认证笔记(填空)
    eslint与prettier
    移动Web:媒体查询及手机端PC端识别
    zsh: command not found: adb问题分析
    Nestjs开发环境和生产环境的配置
    给网站添加“开放搜索描述“以适配浏览器的“站点搜索“
    C++友元(friend)
  • 原文地址:https://blog.csdn.net/Y_soybean_milk/article/details/133747823