LeetCode 565: Array Nesting
Description
A zero-indexed array A of length N contains all integers from 0 to N-1.
Find and return the longest length of set S, where S[i] = {A[i], A[A[i]], A[A[A[i]]], ... } subjected to the rule below.
Suppose the first element in S starts with the selection of element A[i] of index = i, the next element in S should be A[A[i]], and then A[A[A[i]]]… By that analogy, we stop adding right before a duplicate element occurs in S.
Example
问题分析
按照题意,数组中的N个元素已按照其数值关系,被划分为
1个或多个互不相交的“闭环”
;
本题要做的,就是
依次找出所有的闭环,并返回环的最大长度
;因此,可通过DFS解决该问题。其中每个节点均只有确定的一个子节点,仅需依次遍历至
再次回到起点
。一次遍历过程将遍历一个环上的全部节点。遍历完所有的环,返回最大长度,即可。
实现要点
避免重复遍历:使用0/1数组,记录遍历状态;
Submission
版权声明: 本文为 InfoQ 作者【隔壁小王】的原创文章。
原文链接:【http://xie.infoq.cn/article/67ac8b670dc95ececf1984780】。文章转载请联系作者。
评论