华为OD机试真题 JavaScript 实现【最小传输时延】【2023 B卷 100分】,附详细解题思路

在这里插入图片描述

一、题目描述

某通信网络中有N个网络节点,用1到N进行标识。

网络通过一个有向无环图表示,其中图的边的值表示结点之间的消息传递时延。

现给定相连节点之间的时延列表times[i] = {u,v,w},u表示源节点,v表示目的节点,w表示u和v之间的消息传递时延。

请计算给定源节点到目的节点的最小传输时延,如果目的节点不可达,返回-1。

二、输入描述

第一行输入两个正整数,表示网络节点的个数N,M,用空格分割;

下面的M行表示两个节点之间的时延列表{u,v,w}

最后一行输入两个正整数,u表示源节点,v表示目的节点;

三、输出描述

输出一个整数,表示源节点到目的节点的最小时延。

四、解题思路

  1. 定义一个时延列表{u,v,w}的集合list;
  2. 将M行输入的时延列表{u,v,w}加入list;
  3. 递归调用,计算定源节点到目的节点,符合要求的时延集合;
  4. 计算给定源节点到目的节点的最小传输时延;
  5. 如果目的节点不可达,返回-1

五、JavaScript算法源码

let delayList = [];
let uvwList = [];

function getDelay(begin, end, count) {
    for (let i = 0; i < uvwList.length; i++) {
        let temp = uvwList[i];
        if (temp[0] === begin) {
            if (temp[1] === end) {
                delayList.push(count + temp[2]);
                continue;
            }
            getDelay(temp[1], end, count + temp[2]);
        }
    }
}

function calculate(N, M, uvw, begin, end) {
    uvwList = uvw;

    getDelay(begin, end, 0);

    if (delayList.length === 0) {
        return -1;
    } else {
        return Math.min(...delayList);
    }
}

六、效果展示

1、输入

5 4
1 3 10
3 4 5
4 5 12
1 5 25
1 5

2、输出

25

3、说明

计算源节点1到目的节点5,符合要求的时延集合

1到3时延10 + 3到4时延5 + 4到5时延12 = 27;

1到5时延25;

所以源节点1到目的节点5的最小时延是25。


下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

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

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,javascript,java,学习,算法)