【每日一题】LeetCode 2374.边积分最高节点(图、哈希表)

【每日一题】LeetCode 2374.边积分最高节点(图、哈希表)

题目描述

给定一个有向图,图中包含 n 个节点,节点编号从 0n - 1。每个节点都有一个出边,指向图中的另一个节点。图由一个长度为 n 的整数数组 edges 表示,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i] 的有向边。

每个节点 i 的"边积分"定义为所有存在一条指向节点 i 的边的节点的编号之和。

任务是找出边积分最高的节点。如果多个节点的边积分相同,则返回编号最小的节点。

思路分析

  1. 初始化 :创建一个长度为 n 的数组 ans 用于存储每个节点的边积分,初始值都为 0

  2. 计算边积分 :遍历数组 edges,对于每个节点 i,将其编号 i 加到它指向的节点 edges[i] 在数组 ans 中对应的位置上。这样,每个节点的边积分就是所有指向它的节点编号的和。

  3. 寻找最大边积分 :遍历数组 ans,找到具有最大边积分的节点。如果有多个节点边积分相同,则选择编号最小的节点。

  4. 返回结果:返回边积分最高的节点的编号。

输入示例

  • 示例 1:

    • 输入:edges = [1,0,0,0,0,7,7,5]
    • 输出:7
    • 解释:- 节点 1、2、3 和 4 都有指向节点 0 的边,节点 0 的边积分等于 1 + 2 + 3 + 4 = 10 。- 节点 0 有一条指向节点 1 的边,节点 1 的边积分等于 0 。- 节点 7 有一条指向节点 5 的边,节点 5 的边积分等于 7 。- 节点 5 和 6 都有指向节点 7 的边,节点 7 的边积分等于 5 + 6 = 11 。节点 7 的边积分最高,所以返回 7 。
  • 示例 2:

    • 输入:edges = [2,0,0,2]
    • 输出:0
    • 解释:- 节点 1 和 2 都有指向节点 0 的边,节点 0 的边积分等于 1 + 2 = 3 。- 节点 0 和 3 都有指向节点 2 的边,节点 2 的边积分等于 0 + 3 = 3 。节点 0 和 2 的边积分都是 3 。由于节点 0 的编号更小,返回 0 。

    提示:

    • n == edges.length
    • 2 <= n <= 105
    • 0 <= edges[i] < n
    • edges[i] != i

代码实现

java 复制代码
class Solution {
    public int edgeScore(int[] edges) {
        // 获取节点数量
        int n = edges.length;
        // 初始化边积分数组,长度为 n,所有值初始化为 0
        long[] ans = new long[n];
        // 初始化最大边积分为最小值,用于比较
        long max = Long.MIN_VALUE;
        // 初始化最大边积分对应的节点索引
        long index = -1;

        // 遍历 edges 数组,计算每个节点的边积分
        for (int i = 0; i < n; i++) {
            int x = edges[i];
            // 将当前节点的编号加到它指向的节点的边积分上
            ans[x] += i;
        }

        // 遍历 ans 数组,找到边积分最大的节点
        for (int j = 0; j < n; j++) {
            // 如果当前节点的边积分大于已知的最大边积分,则更新最大边积分和对应的节点索引
            if (max < ans[j]) {
                max = ans[j];
                index = j;
            }
        }

        // 返回边积分最高的节点的编号
        return (int) index;
    }
}
相关推荐
武子康12 小时前
Java-181 OSS 实战指南:Bucket/外链/防盗链/计费与常见坑
java·大数据·分布式·oss·云存储·fastdfs·ali
程序员-King.12 小时前
day107—同向双指针—无重复字符的最长字串(LeetCode-3)
算法·leetcode·双指针
聆风吟º12 小时前
【Spring Boot 报错已解决】告别“Whitelabel Error Page”:Spring Boot 404报错的排查指南
java·spring boot·后端
风掣长空12 小时前
【LeetCode】面试经典150题:合并两个有序数组
算法·leetcode·面试
w10463672p12 小时前
java解析CSV文件(一)——Java使用Apache.Commons.CSV解析CSV文件应用实践
java·apache·springboot·csv
weixin_3077791312 小时前
Jenkins Gson API插件:统一JSON处理的基础库
java·运维·开发语言·架构·jenkins
im_AMBER12 小时前
Leetcode 69 正整数和负整数的最大计数
数据结构·笔记·学习·算法·leetcode
fufu031112 小时前
Linux环境下的C语言编程(三十六)
linux·c语言·开发语言·数据结构·算法
踢球的打工仔12 小时前
前端html(1)
前端·算法·html
MicroTech202512 小时前
MLGO微算法科技发布基于RANSAC-ISS-3DSC改进ICP的激光扫描仪点云快速配准算法
科技·算法·3d