当前位置:网站首页>Leicester Weekly 304 6135. The longest ring in the picture Inward base ring tree
Leicester Weekly 304 6135. The longest ring in the picture Inward base ring tree
2022-08-01 08:14:00 【Yu Niangniang】
6135. Longest loop in the figure
Give you a directed graph of
nnodes, nodes numbered0ton - 1, where each node has at most one outgoing edge.The graph is represented by an array
edgesof sizenwith subscripts starting at 0, nodesitoThere is a directed edge between the nodesedges[i].If nodeihas no outgoing edges, thenedges[i] == -1.Please return the longest ring in the figure. If there is no ring, please return
-1.A ring is a path that starts and ends at the same node.
Example 1:
Input:edges = [3,3,4,2,3]Output to:3Explanation: The longest cycle in the graph is: 2 -> 4 -> 3 -> 2 .The length of this ring is 3 , so 3 is returned.Example 2:
Input:edges = [2,-1,3,1]Output:-1Explanation: There are no cycles in the graph.Tip:
n == edges.length2 <= n <= 1e5-1 <= edges[i] < nedges[i] != iSource: LeetCode
Link: https://leetcode.cn/problems/longest-cycle-in-a-graph
The copyright belongs to LeetCode.For commercial reprints, please contact the official authorization, and for non-commercial reprints, please indicate the source.
Results of the questions
Failed in the weekly competition, and I wrote T T after reviewing the game at night.Originally wanted to ask the big guy, and then tried it out
Method: Simulate

A single-pointer graph can eventually form one or more shapes similar to the above, with multiple outer lines connected to the inner ring

When we visit a duplicate node from a pointer, we may get the result corresponding to the red line above. Each point corresponding to the red line should be judged and marked, and then when we visit the node that has been visited at the red position, end directly
1. Access to a duplicate node: end of recording the difference between the current timestamp and the old timestamp, and record the visited point at the same time
2. Visiting an illegal node (a node visited by the old node): end directly, record the visited point
class Solution {public int longestCycle(int[] edges) {int n = edges.length;boolean[] visited = new boolean[n];int ans = -1;for(int i = 0; i < n; i++){if(visited[i]) continue;Map used = new HashMap<>();int pos = i;int size = 0;while (edges[pos]!=-1&&!used.containsKey(edges[pos])&&!visited[edges[pos]]){++size;pos = edges[pos];used.put(pos,size);}if(edges[pos]!=-1&&!visited[edges[pos]]){ans = Math.max(ans,size-used.get(edges[pos])+1);}for(Integer key:used.keySet()){visited[key]=true;}}return ans;}} 边栏推荐
猜你喜欢
随机推荐
pytest接口自动化测试框架 | parametrize叠加使用
Data Analysis 5
POJ1287联网题解
leetcode-6134:找到离给定两个节点最近的节点
leetcode-6132:使数组中所有元素都等于零
关于App不同方式更新的测试点归纳
如何使用Photoshop合成星轨照片,夜空星轨照片后期处理方法
MySQL查询进阶——从函数到表连接的使用你还记得吗
LeetCode240+312+394
华为深度学习课程第六、七章
配置我的kitty
拳头游戏免版权音乐下载,英雄联盟无版权音乐,可用于视频创作、直播
What do the values 1, 2, and 3 in nodetype mean?
【手撕AHB-APB Bridge】~ AHB地址总线的低两位为什么不用来表示地址呢?
How to generate and configure public key certificate in Alipay
SaaS安全认证综合指南
基于tika实现对文件类型进行判断
C语言学习概览(三)
HoloView--Customization
HoloView--live data











