leetcode 2359. 找到離給定兩個節點最近的節點

給你一個?n?個節點的?有向圖?,節點編號為?0?到?n - 1?,每個節點?至多?有一條出邊。

有向圖用大小為?n?下標從?0?開始的數組?edges?表示,表示節點?i?有一條有向邊指向?edges[i]?。如果節點?i?沒有出邊,那么?edges[i] == -1?。

同時給你兩個節點?node1?和?node2?。

請你返回一個從?node1?和?node2?都能到達節點的編號,使節點?node1?和節點?node2?到這個節點的距離?較大值最小化。如果有多個答案,請返回?最小?的節點編號。如果答案不存在,返回?-1?。

注意?edges?可能包含環。

示例 1:

輸入:edges = [2,2,3,-1], node1 = 0, node2 = 1
輸出:2
解釋:從節點 0 到節點 2 的距離為 1 ,從節點 1 到節點 2 的距離為 1 。
兩個距離的較大值為 1 。我們無法得到一個比 1 更小的較大值,所以我們返回節點 2 。

示例 2:

輸入:edges = [1,2,-1], node1 = 0, node2 = 2
輸出:2
解釋:節點 0 到節點 2 的距離為 2 ,節點 2 到它自己的距離為 0 。
兩個距離的較大值為 2 。我們無法得到一個比 2 更小的較大值,所以我們返回節點 2 。

提示:

  • n == edges.length
  • 2 <= n <= 10^5
  • -1 <= edges[i] < n
  • edges[i] != i
  • 0 <= node1, node2 < n

分析:題目提到每個點至多有一條出邊,可以從某個點出發,一直沿著出邊遍歷,得到這個點可以到達的所有點,以及對應的距離。之后對比 node1 和 node2 能達到的點和距離,找到符合要求的點即可。

typedef struct node
{int pos,dis;
}node;int closestMeetingNode(int* edges, int edgesSize, int node1, int node2) {int t=1;int len1[edgesSize+5],len2[edgesSize+5],flag1[edgesSize+5],flag2[edgesSize+5];node num1[edgesSize+5],num2[edgesSize+5];memset(flag1,0,sizeof(flag1));memset(flag2,0,sizeof(flag2));flag1[node1]=1,num1[node1].dis=0,num1[node1].pos=node1;for(int i=node1;i<edgesSize;i=edges[i]){if(i==-1||edges[i]==-1)break;if(!flag1[edges[i]])num1[edges[i]].dis=t,num1[edges[i]].pos=edges[i],flag1[edges[i]]=1,t++;else break;}t=1;flag2[node2]=1,num2[node2].dis=0,num2[node2].pos=node2;for(int i=node2;i<edgesSize;i=edges[i]){if(i==-1||edges[i]==-1)break;if(!flag2[edges[i]])num2[edges[i]].dis=t,num2[edges[i]].pos=edges[i],flag2[edges[i]]=1,t++;else break;}int ans=-1,index=-1;for(int i=0;i<edgesSize;++i){if(flag1[i]&&flag1[i]==flag2[i]){if(ans==-1||ans>fmax(num1[i].dis,num2[i].dis))ans=fmax(num1[i].dis,num2[i].dis),index=num1[i].pos;else if(ans==fmax(num1[i].dis,num2[i].dis))index=fmin(index,num1[i].pos);}}return index;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/82993.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/82993.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/82993.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1. pytorch手寫數字預測

1. pytorch手寫數字預測 1.背景2.準備數據集2.定義模型3.dataloader和訓練4.訓練模型5.測試模型6.保存模型 1.背景 因為自身的研究方向是多模態目標跟蹤&#xff0c;突然對其他的視覺方向產生了興趣&#xff0c;所以心血來潮的回到最經典的視覺任務手寫數字預測上來&#xff0…

AWS WebRTC:獲取ICE服務地址(part 2): ICE Agent的作用

上一篇&#xff0c;已經獲取到了ICE服務地址&#xff0c;從返回結果中看&#xff0c;是兩組TURN服務地址。 拿到這些地址有什么用呢&#xff1f;接下來就要說到WebRTC中ICE Agent的作用了&#xff0c;返回的服務地址會傳給WebRTC最終給到ICE Agent。 ICE Agent的作用&#xf…

大數據時代的利劍:Bright Data網頁抓取與自動化工具共建高效數據采集新生態

目錄 一、為何要選用Bright Data網頁自動化抓取——幫助我們高效高質解決以下問題&#xff01; 二、Bright Data網頁抓取工具 - 網頁爬蟲工具實測 2.1 首先注冊用戶 2.2 首先點擊 Proxies & Scraping &#xff0c;再點擊瀏覽器API的開始使用 2.3 填寫通道名稱&#xff…

指紋識別+精準化POC攻擊

開發目的 解決漏洞掃描器的痛點 第一就是掃描量太大&#xff0c;對一個站點掃描了大量的無用 POC&#xff0c;浪費時間 指紋識別后還需要根據對應的指紋去進行 payload 掃描&#xff0c;非常的麻煩 開發思路 我們的思路分為大體分為指紋POC掃描 所以思路大概從這幾個方面…

【Day40】

DAY 40 訓練和測試的規范寫法 知識點回顧&#xff1a; 彩色和灰度圖片測試和訓練的規范寫法&#xff1a;封裝在函數中展平操作&#xff1a;除第一個維度batchsize外全部展平dropout操作&#xff1a;訓練階段隨機丟棄神經元&#xff0c;測試階段eval模式關閉dropout 作業&#x…

【HTML-13】HTML表格合并技術詳解:打造專業數據展示

表格是HTML中展示結構化數據的重要元素&#xff0c;而表格合并則是提升表格表現力的關鍵技術。本文將全面介紹HTML中的表格合并方法&#xff0c;幫助您創建更專業、更靈活的數據展示界面。 1. 表格合并基礎概念 在HTML中&#xff0c;表格合并主要通過兩個屬性實現&#xff1a…

<uniapp><threejs>在uniapp中,怎么使用threejs來顯示3D圖形?

前言 本專欄是基于uniapp實現手機端各種小功能的程序,并且基于各種通訊協議如http、websocekt等,實現手機端作為客戶端(或者是手持機、PDA等),與服務端進行數據通訊的實例開發。 發文平臺 CSDN 環境配置 系統:windows 平臺:visual studio code、HBuilderX(uniapp開…

如何制作全景VR圖?

全景VR圖&#xff0c;特別是720度全景VR&#xff0c;為觀眾提供一種沉浸式體驗。 全景VR圖能夠捕捉場景的全貌&#xff0c;還能將多個角度的圖片或視頻無縫拼接成一個完整的全景視角&#xff0c;讓觀眾在虛擬環境中自由探索。隨著虛擬現實&#xff08;VR&#xff09;技術的飛速…

前端使用qrcode來生成二維碼的時候中間添加logo圖標

這個開源倉庫可以讓你在前端頁面中生成二維碼圖片&#xff0c;并且支持調整前景色和背景色&#xff0c;但是有個問題&#xff0c;就是不能添加logo圖片。issue&#xff1a; GitHub Where software is built 但是已經有解決方案了&#xff1a; add a logo picture Issue #21…

【C語言】函數指針及其應用

目錄 1.1 函數指針的概念和應用 1.2 賦值與內存模型 1.3 調用方式與注意事項 二、函數指針的使用 2.1 函數指針的定義和訪問 2.2 動態調度&#xff1a;用戶輸入驅動函數執行 2.3 函數指針數組進階應用 2.4 函數作為參數的高階抽象 三、回調函數 3.1 指針函數…

安裝flash-attention失敗的終極解決方案(WINDOWS環境)

想要看linux版本下安裝問題的請走這里&#xff1a;安裝flash-attention失敗的終極解決方案&#xff08;LINUX環境&#xff09; 其實&#xff0c;現在的flash-attention不像 v2.3.2之前的版本&#xff0c;基本上不兼容WINDOWS環境。但是在WINDOWS環境安裝總還是有那么一點不順暢…

[C]基礎16.數據在內存中的存儲

博客主頁&#xff1a;向不悔本篇專欄&#xff1a;[C]您的支持&#xff0c;是我的創作動力。 文章目錄 0、總結1、整數在內存中的存儲1.1 整數的二進制表示方法1.2 不同整數的表示方法1.3 內存中存儲的是補碼 2、大小端字節序和字節序判斷2.1 什么是大小端2.2 為什么有大小端2.3…

Python 基于卷積神經網絡手寫數字識別

Ubuntu系統&#xff1a;22.04 python版本&#xff1a;3.9 安裝依賴庫&#xff1a; pip install tensorflow2.13 matplotlib numpy -i https://mirrors.aliyun.com/pypi/simple 代碼實現&#xff1a; import tensorflow as tf from tensorflow.keras.models import Sequent…

ElectronBot復刻-電路測試篇

typec-16p 接口部分 USB1&#xff08;Type - C 接口&#xff09;&#xff1a;這是通用的 USB Type - C 接口&#xff0c;具備供電和數據傳輸功能。 GND 引腳&#xff08;如 A1、A12、B1、B12 等&#xff09;&#xff1a;接地引腳&#xff0c;用于提供電路的參考電位&#xff0…

ESP8266+STM32 AT驅動程序,心知天氣API 記錄時間: 2025年5月26日13:24:11

接線為 串口2 接入ESP8266 esp8266.c #include "stm32f10x.h"//8266預處理文件 #include "esp8266.h"//硬件驅動 #include "delay.h" #include "usart.h"//用得到的庫 #include <string.h> #include <stdio.h> #include …

CDN安全加速:HTTPS加密最佳配置方案

CDN安全加速的HTTPS加密最佳配置方案需從證書管理、協議優化、安全策略到性能調優進行全鏈路設計&#xff0c;以下是核心實施步驟與注意事項&#xff1a; ??一、證書配置與管理?? ??證書選擇與格式?? ??證書類型??&#xff1a;優先使用受信任CA機構頒發的DV/OV/EV證…

【前端】Twemoji(Twitter Emoji)

目錄 注意使用Vue / React 項目 驗證 Twemoji 的作用&#xff1a; Twemoji 會把你網頁/應用中的 Emoji 字符&#xff08;如 &#x1f604;&#xff09;自動替換為 Twitter 風格的圖片&#xff08;SVG/PNG&#xff09;&#xff1b; 它不依賴系統字體&#xff0c;因此在 Android、…

GCN圖神經網絡的光伏功率預測

一、GCN圖神經網絡的核心優勢 圖結構建模能力 GCN通過鄰接矩陣&#xff08;表示節點間關系&#xff09;和節點特征矩陣&#xff08;如氣象數據、歷史功率&#xff09;進行特征傳播&#xff0c;能夠有效捕捉光伏電站間的空間相關性。其核心公式為&#xff1a; H ( l 1 ) σ (…

按照狀態實現自定義排序的方法

方法一&#xff1a;使用 MyBatis-Plus 的 QueryWrapper 自定義排序 在查詢時動態構建排序規則&#xff0c;通過 CASE WHEN 語句實現優先級排序&#xff1a; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.springframework.stereotype.Ser…

【計算機網絡】IPv6和NAT網絡地址轉換

IPv6 IPv6協議使用由單/雙冒號分隔一組數字和字母&#xff0c;例如2001:0db8:85a3:0000:0000:8a2e:0370:7334&#xff0c;分成8段。IPv6 使用 128 位互聯網地址&#xff0c;有 2 128 2^{128} 2128個IP地址無狀態地址自動配置&#xff0c;主機可以通過接口標識和網絡前綴生成全…