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

news2024/11/13 20:24:25

【每日一题】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

代码实现

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;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2154002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

江协科技STM32学习- P15 TIM输出比较

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

6张图掌握提示词工程师工作范围与工作技巧(提示词原理篇)

在人工智能的疆域中&#xff0c;提示词工程师扮演着至关重要的角色。他们精心设计的话语&#xff0c;是引导AI模型理解人类需求、激发创造力的关键。如同指挥官的号令&#xff0c;提示词工程师的每一个提问&#xff0c;都让AI的潜力得到释放&#xff0c;让技术与智慧的对话更加…

如何有效检测住宅IP真伪?

在当今的互联网时代&#xff0c;住宅IP&#xff08;即家庭用户通过宽带服务提供商获得的IP地址&#xff09;在跨境电商、广告投放、网络安全等多个领域扮演着重要角色。然而&#xff0c;随着网络环境的复杂化和欺诈行为的增多&#xff0c;如何有效检测和辨别住宅IP的真伪成为了…

2024年csp-j 初赛 真题+答案解析

恭喜CSP-J组考生完成第一轮认证&#xff01; 今天是CSP-J/S初赛的考试日&#xff0c;首先要祝贺所有参加CSP-J组考试的同学顺利完成第一轮认证&#xff01;

C++中的new与delete

目录 1.简介 2.底层 1.简介 new是升级版的malloc&#xff0c;它会先开空间再去调用构造函数。 delete是升级版的free&#xff0c;它会先调用析构函数再free掉空间。 class A { public:A(int a10, int b10){a a1;b b1;}private:int a;int b; };int main() {//new会先开空间…

大数据Flink(一百二十三):五分钟上手Flink MySQL连接器

文章目录 五分钟上手Flink MySQL连接器 一、创建数据库表 二、​​​​​​创建session集群 三、源表查询 四、​​​​​窗口计算 五、​​​​​​结果数据写回数据库 五分钟上手Flink MySQL连接器 MySQL Connector可以将本地或远程的MySQL数据库连接到Flink中&#x…

以太网接口MII 和 RMII

媒体独立接口 (MII) 是连接以太网MAC (媒体访问控制) 设备和PHY (物理层) 设备的标准化方法。其主要目的是促进以太网系统这两个基本组件之间的通信。 媒体独立接口 (MII) 介质独立接口 (MII) 是由 IEEE 802.3 标准定义的并行接口。MII 的管理接口允许配置和控制多个 PHY 设备…

安装Win11 24H2如何跳过BitLocker加密

今天来给大家分享一下在安装 Windows11 24H2 时&#xff0c;如何跳过BitLocker加密的小方法&#xff0c;Windows11 24H2版本默认自动为用户开启Bitlocker 加密&#xff0c;很多用户不知道自己设备已被偷偷加密&#xff0c;这样也可能会导致磁盘性能严重损失&#xff0c;特别是4…

计算机毕业设计 数字化农家乐管理平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

使用Diskgenius系统迁移

使用Diskgenius系统迁移 1、使用系统迁移2、注意点3、新备份的系统盘装在电脑上可能出现盘符错乱导致开机不进入桌面情况 1、使用系统迁移 参考视频&#xff1a; DiskGenius无损系统迁移&#xff0c;换硬盘无需重装系统和软件 2、注意点 1&#xff09;新的硬盘里面的所有资料…

linux安装Anaconda3

先将Anaconda3安装包下载好&#xff0c;然后在主文件夹里新建一个文件夹&#xff0c;将Anaconda3安装包拖进去。 打开终端未来不出现缺东西的异常情况&#xff0c;我们先安装 yum install -bzip2然后进入根目录下&#xff0c;在进入Anaconda3文件夹下 sh包安装方式 sh Anac…

为什么用迭代器调用不了对象中的函数

没加const可以 加了const就不行 我懂了 加了const v的值就不能修改&#xff0c;我的那些函数都可以修改值 应该是 好像不对 有大佬会吗

vue 实现tab菜单切换

1、目标&#xff1a; 实现切换tab菜单&#xff0c;激活状态&#xff0c;按钮高亮&#xff0c;显示对应的菜单内容 2、实现 <template><div class"tan_menu"><ul class"container"><liclass"item"v-for"item in tab…

常用工具推荐!分享7款AI论文修改软件工具网站

在当今学术研究和写作领域&#xff0c;AI论文修改软件工具已经成为了不可或缺的助手。这些工具不仅能够帮助研究人员提高写作效率&#xff0c;还能确保论文的质量和原创性。以下是七款值得推荐的AI论文修改软件工具网站&#xff0c;其中特别推荐千笔-AIPassPaper。 1. 千笔-AI…

C++编程语言:基础设施:命名空间(Bjarne Stroustrup)

第 14 章 命名空间(Namespaces) 目录 14.1 组成问题(Composition Problems) 14.2 命名空间(Namespaces) 14.2.1 显式修饰(Explicit Qualification) 14.2.2 使用using 声明 14.2.3 using 指令 14.2.4 参数依赖查询 14.2.5 命名空间的开放性 14.3 模块化和接口 …

智能BI项目第五期

本期主要内容 系统问题分析异步化业务流程分析线程池讲解&#xff08;入门 原理 实战&#xff09;系统异步化改造开发 1.系统问题分析 当系统面临大量用户请求时&#xff0c;我们后端的 AI 处理能力有限&#xff0c;例如服务器的内存、CPU、网络带宽等资源有限&#xff0c…

git 本地分支误删,怎么恢复?误删本地已提交未推送的分支!

误删本地已提交未推送的分支&#xff01; 前提&#xff1a; 已提交&#xff01; 重点&#xff1a;未推送&#xff01; 要是推送了&#xff0c;再拉一下代码就行了。你也不会来搜这个帖子了。 如果你删除的分支里有你未提交的代码&#xff0c;不用往下看了&#xff0c;帮不到你…

港湾周评|2万元的三折叠手机可能与普通人无关

《港湾商业观察》李镭 三折叠手机时代正式开启&#xff0c;你准备好了吗&#xff1f; 9月20日上午&#xff0c;华为Mate XT非凡大师正式开售&#xff0c;据悉各大平台迅速售罄&#xff0c;华为商城显示&#xff0c;9月21日将再次放货。 该款手机被称为全球首款商用三折叠手机…

OpenWrt 定时重启

问题 想设置 OpenWrt 定时重启&#xff0c;避免因长期不重启导致的问题。 方法 参考 Scheduling tasks with cronopenwrt设置定时重启&#xff08;天/周/月&#xff09;定时重启openwrt (istoreos) 软路由系统 设置 cron 自启动 System - Start up - 找到 cron - 设置成自…

Java中List、ArrayList与顺序表

List、ArrayList与顺序表 List什么是List常用方法介绍List的使用 ArrayList与顺序表线性表顺序表接口的实现 ArrayList简介ArrayList的使用ArrayList的构造ArrayList的常见操作ArrayList的遍历ArrayList的扩容机制 ArrayList的具体使用杨辉三角简单的洗牌算法 ArrayList的问题及…