• 【LeetCode】2285. 道路的最大总重要性


    题目描述

    给你一个整数 n ,表示一个国家里的城市数目。城市编号为 0 到 n - 1 。

    给你一个二维整数数组 roads ,其中 roads[i] = [ai, bi] 表示城市 ai 和 bi 之间有一条 双向 道路。

    你需要给每个城市安排一个从 1 到 n 之间的整数值,且每个值只能被使用 一次 。道路的 重要性 定义为这条道路连接的两座城市数值 之和 。

    请你返回在最优安排下,所有道路重要性 之和 最大 为多少。

    示例1:

    输入:n = 5, roads = [[0,1],[1,2],[2,3],[0,2],[1,3],[2,4]]
    输出:43
    解释:上图展示了国家图和每个城市被安排的值 [2,4,5,3,1] 。
    -道路 (0,1) 重要性为 2 + 4 = 6 。
    -道路 (1,2) 重要性为 4 + 5 = 9 。
    -道路 (2,3) 重要性为 5 + 3 = 8 。
    -道路 (0,2) 重要性为 2 + 5 = 7 。
    -道路 (1,3) 重要性为 4 + 3 = 7 。
    -道路 (2,4) 重要性为 5 + 1 = 6 。
    所有道路重要性之和为 6 + 9 + 8 + 7 + 7 + 6 = 43 。
    可以证明,重要性之和不可能超过 43 。

    示例2:

    输入:n = 5, roads = [[0,3],[2,4],[1,3]]
    输出:20
    解释:上图展示了国家图和每个城市被安排的值 [4,3,2,5,1] 。
    -道路 (0,3) 重要性为 4 + 5 = 9 。
    -道路 (2,4) 重要性为 2 + 1 = 3 。
    -道路 (1,3) 重要性为 3 + 5 = 8 。
    所有道路重要性之和为 9 + 3 + 8 = 20 。
    可以证明,重要性之和不可能超过 20 。

    解题思路

    1,本题的关键在于如何给每个节点安排值
    2,如果要和最大,需要把值最大的节点计算更多次
    3,因此我们统计每个节点的度
    4,一个节点的值被计算的次数就是它的度

    编写代码

    func maximumImportance(n int, roads [][]int) (ans int64) {
    	deg := make([]int, n)
    	for _, r := range roads {
    		deg[r[0]]++
    		deg[r[1]]++
    	}
    	sort.Ints(deg)
    	for i, d := range deg {
    		ans += int64(d) * int64(i+1)
    	}
    	return
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    双通道内存和单通道的区别是什么
    搭建可远程访问的服务:利用Apache和内网穿透实现公网访问
    Oracle/PLSQL: Group_ID Function
    SWPU NSS新生赛(校外通道)
    Redis客户端通信RESP协议
    现代架构设计:构建可伸缩、高性能的系统
    [python]二十、python正则表达式详解
    配置、软件配置项、软件配置管理项辨析
    Qt多线程http下载器之三:文件下载异常的处理
    NLP评价指标
  • 原文地址:https://blog.csdn.net/ITqingliang/article/details/125439740