华为OD机试真题 JavaScript 实现【微服务的集成测试】【2023Q1 100分】,附详细解题思路

在这里插入图片描述

目录

    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、JavaScript算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

一、题目描述

现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次服务自身启动加载会消耗一些时间。
给你一个 nxn 的二维矩阵 useTime,其中 useTime[i][i]=10 表示服务 i 自身启动加载需要消耗10s,useTime[i][j]=1 表示服务 i 启动依赖 j 启动完成,useTime[i][k]=0,表示服务 i 启动不依赖服务 k,其实0 <= i,j,k

二、输入描述

第一行输入服务总量n,之后的 n 行表示服务启动的依赖关系以及自身启动加载耗时。

最后一行输入 k 表示计算需要等待多长时间后可以对服务 k 进行集成测试。

其中 1 <= k <= n,1 <= n <= 100。

三、输出描述

最少需要等待多长时间(s)后可以对服务 k 进行集成测试。

四、解题思路

  1. 首先,读取输入的服务总量n和依赖关系以及启动加载时间的二维矩阵useTime;
  2. 根据输入的服务总量n创建一个nxn的二维数组nums,并将useTime的值赋给nums;
  3. 读取输入的需要进行集成测试的服务k;
  4. 调用needTime方法,传入二维数组nums和服务k的索引值(k-1);needTime方法用于计算当前服务需要等待的最少时间;
  5. 在needTime方法中,首先获取当前服务自身启动加载时间selfTime,即nums[k][k];
  6. 遍历二维数组nums的第k行,如果存在依赖关系(nums[k][i]==1且i!=k),则递归调用needTime方法计算依赖服务i的最少等待时间time,并更新dependMaxTime为依赖服务的最大等待时间;
  7. 返回selfTime加上dependMaxTime,即为当前服务k进行集成测试所需的最少等待时间;
  8. 输出最少等待时间;

五、JavaScript算法源码

function needTime(nums, k) {
  const n = nums[0].length;
  const selfTime = nums[k][k];
  let dependMaxTime = 0;
  
  for (let i = 0; i < n; i++) {
    if (nums[k][i] === 1 && i !== k) {
      const time = needTime(nums, i);
      dependMaxTime = Math.max(dependMaxTime, time);
    }
  }
  
  return selfTime + dependMaxTime;
}

function calculateIntegrationTestTime(n, dependencyMatrix, k) {
  const nums = [];
  
  for (let i = 0; i < n; i++) {
    nums[i] = dependencyMatrix[i].split(" ").map(Number);
  }
  
  const time = needTime(nums, k - 1);
  return time;
}

六、效果展示

1、输入

3
5 0 0
1 5 0
0 1 5
3

2、输出

15


下一篇:华为OD机试真题 JavaScript 实现【贪心的商人】【2023Q1 100分】

本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,javascript,集成测试,程序人生,学习)