力扣(leetcode)每日一题 2374 边积分最高的节点

embedded/2024/9/23 12:20:17/
题干

2374. 边积分最高的节点 - 力扣(LeetCode)

给你一个有向图,图中有 n 个节点,节点编号从 0n - 1 ,其中每个节点都 恰有一条 出边。

图由一个下标从 0 开始、长度为 n 的整数数组 edges 表示,其中 edges[i] 表示存在一条从节点 i 到节点 edges[i]有向 边。

节点 i边积分 定义为:所有存在一条指向节点 i 的边的节点的 编号 总和。

返回 边积分 最高的节点。如果多个节点的 边积分 相同,返回编号 最小 的那个。

示例 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 。
解法

看着是图的遍历,但是仔细一看就是一个非常简单的贪心。每次刷新记录最大值刷新最大值就好了。
妥妥的属于简单题

如下

原始代码如下(这是错误的)
第一,这里不需要map,map的效率没有初始化数组高
第二,这里的最大值,会溢出Integer.MAX_VALUE 因此需要用long来记录

  public static int edgeScore1(int[] edges) {int max = 0;int maxindex = Integer.MAX_VALUE;Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < edges.length; i++) {int edge = edges[i];Integer value = map.getOrDefault(edge, 0);map.put(edge, value + i);if (max < value + i) {max = value + i;maxindex = edge;} else if (max == value + i) {if (maxindex > edge) {maxindex = edge;}}}return maxindex;}

修改后如下

public static int edgeScore(int[] edges) {long[] dp = new long[edges.length]; // 随便取的名字long max = 0;int maxindex = Integer.MAX_VALUE;for (int i = 0; i < edges.length; i++) {int edge = edges[i];   // 取出指向的点dp[edge] += i;     // 指向的点的累计加上i值if (max < dp[edge]) {    // 更新最大值max = dp[edge];maxindex = edge;} else if (max == dp[edge]) {  // 当前值和最大值相等判断下下标哪个更小if (maxindex > edge) {maxindex = edge;}}}return maxindex;}

http://www.ppmy.cn/embedded/115583.html

相关文章

L4打卡学习笔记

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 K邻近模型 导入数据划分训练集测试集创建模型预测结果结果评分个人总结 导入数据 import pandas as pddatapd.read_table(rC:\Users\11054\Desktop\kLearning\…

Unity 高亮插件HighlightPlus介绍

主要是对官方文档进行了翻译(我做了一些补充和一些小的调整) 但是如果你只是想快速入门: Unity 高亮插件Highlight Plus快速入门-CSDN博客 注意:官方文档本身就落后实际,但对入门仍很有帮助,核心并没有较大改变,有的功能有差异,以实际为准.(目前我已校正了大部分差异,后续我…

WPF实现关系图

该文档用于&#xff1a;WPF内嵌VIS.JS实现关系图&#xff0c;交互通过调用JS实现 1 安装 1.1 WPF 端安装以下包 <package id"CefSharp.Common"/> <package id"CefSharp.Wpf"/>1.2 WPF 框架使用Prism <package id"Prism.Core"…

php调用Gpt 执行 shell curl输出聊天结果实现简单聊天机器人

<?php header("Access-Control-Allow-Origin: *");// return 1; //$command ls -l; // 要执行的shell命令$command "curl http://192.168.124.27:11434/api/chat -d {\"model\": \"openchat:latest\",\"messages\": [{\&qu…

Linux中环境变量设置及查看方法(临时环境变量和用户级别长期环境变量)

设置环境变量的方式&#xff1a;&#xff08;三种&#xff09; Linux中通常来说设置环境变量分为三种&#xff1a;临时设置环境变量&#xff08;只在当前用户的当前终端会话中有效&#xff09;&#xff0c;将环境变量添加到 Shell 启动文件&#xff08;对当前用户有效&#xf…

反序列化- Jackson...

Jackson库 Jackson库的核心功能是将Java对象转换为JSON字符串&#xff08;序列化&#xff09;以及将JSON字符串转换为Java对象&#xff08;反序列化&#xff09; 反序列化器及序列化器 JSR310DateTimeDeserializerBase和JSR310FormattedSerializerBase抽象类 当你创建这些子…

前端工程化4:从0到1构建完整的前端监控平台

前言 一套完整的前端监控系统的主要部分&#xff1a; 数据上报方式数据上送时机性能数据采集错误数据采集用户行为采集定制化指标监控sdk 监控的目的&#xff1a; 一、数据上报方式 本文的方案是&#xff0c;优先navigator.sendBeacon&#xff0c;降级使用1x1像素gif图片…

开源模型应用落地-qwen模型小试-调用Qwen2-VL-7B-Instruct-更清晰地看世界-集成vLLM(二)

一、前言 学习Qwen2-VL ,为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野,更让我们站在科技发展的潮头,紧跟时代的步伐。 Qwen2-VL 具有卓越的图像和视频理解能力,以及多语言支…