IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 力扣周赛304 6135. 图中的最长环 内向基环树 -> 正文阅读

[数据结构与算法]力扣周赛304 6135. 图中的最长环 内向基环树

6135. 图中的最长环

给你一个?n?个节点的?有向图?,节点编号为?0?到?n - 1?,其中每个节点?至多?有一条出边。

图用一个大小为?n?下标从?0?开始的数组?edges?表示,节点?i?到节点?edges[i]?之间有一条有向边。如果节点?i?没有出边,那么?edges[i] == -1?。

请你返回图中的?最长?环,如果没有任何环,请返回?-1?。

一个环指的是起点和终点是?同一个?节点的路径。

示例 1:

输入:edges = [3,3,4,2,3]
输出去:3
解释:图中的最长环是:2 -> 4 -> 3 -> 2 。
这个环的长度为 3 ,所以返回 3 。

示例 2:

输入:edges = [2,-1,3,1]
输出:-1
解释:图中没有任何环。

提示:

  • n == edges.length
  • 2 <= n <= 1e5
  • -1 <= edges[i] < n
  • edges[i] != i

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/longest-cycle-in-a-graph
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

做题结果

周赛失败,晚上复盘一下子就写出来了T T。本来想问问大佬,然后试一下就出来了

方法:模拟

?

?单指针的图,最后都可以形成一个或多个类似上图的形状,多个外部线连到内部环

当我们从一个指针访问到重复节点的时候,可能得到上面红色线对应的结果,红色线对应的每个点都应该判重,打标记,后续在访问到红色位置访问过的节点时,直接结束

1. 访问到重复节点:记录当前时间戳和旧时间戳的差值结束,同时记录已访问点

2. 访问到非法节点(旧节点访问过的节点):直接结束,记录已访问点

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

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 11:07:37  更:2022-08-06 11:11:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:43:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码