A zero-indexed array A consisting of N different integers is given. The array contains all integers in the range [0, N - 1].
Sets S[K] for 0 <= K < N are defined as follows:
S[K] = { A[K], A[A[K]], A[A[A[K]]], … }.
Sets S[K] are finite for each K and should NOT contain duplicates.
Write a function that given an array A consisting of N integers, return the size of the largest set S[K] for this array.
Example 1:
Note:
N is an integer within the range [1, 20,000].
The elements of A are all distinct.
Each element of array A is an integer within the range [0, N-1].
解法1: O(N) Time + O(N) Space
用DFS的思想,同时记录所访问过的元素。对于每一个未被访问过的元素跑一遍DFS,直到碰到已经访问过的元素位置,同时更新一下最大的值。
C++
Java