565. Array Nesting
Posted 无惧风云
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了565. Array Nesting相关的知识,希望对你有一定的参考价值。
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:
Input: A = [5,4,0,3,1,6,2] Output: 4 Explanation: A[0] = 5, A[1] = 4, A[2] = 0, A[3] = 3, A[4] = 1, A[5] = 6, A[6] = 2.
One of the longest S[K]: S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0}
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 class Solution { 2 public: 3 int arrayNesting(vector<int>& nums) { 4 int len = nums.size(); 5 int N = len; 6 int max = 0; 7 int result = 0; 8 for (int i = 0;i < len;i++) 9 { 10 if (nums[i] == N) 11 { 12 continue; 13 } 14 else 15 { 16 int k = i; 17 while (k < len&&nums[k] != N) 18 { 19 max++; 20 int k1 =nums[k]; 21 nums[k] = N; 22 k = k1; 23 } 24 } 25 if (max > result) 26 { 27 result = max; 28 29 } 30 max = 0; 31 } 32 return result; 33 } 34 };
以上是关于565. Array Nesting的主要内容,如果未能解决你的问题,请参考以下文章