- 数组嵌套
索引从0开始长度为N的数组A,包含0到N - 1的所有整数。找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], … }且遵守以下的规则。
假设选择索引为i的元素A[i]为S的第一个元素,S的下一个元素应该是A[A[i]],之后是A[A[A[i]]]… 以此类推,不断添加直到S出现重复的元素。
class Solution {
public int arrayNesting(int[] nums) {
int result = 0;
//定义模拟集合数组
int[] array = new int[nums.length];
for (int i = 0; i < nums.length; i++) {
//定义嵌套索引
int index = i;
int temp = 0;
while (true) {
if(array[index] == 0) {
//标记未选择元素
array[index] = 1;
temp++;
index = nums[index];
}
else
//出现重复元素
break;
if(temp == nums.length)
break;
}
result = Math.max(temp, result);
}
return result;
}
}