题目描述:

image.png
image.png
解题思路:本题思想上有贪心算法那味道,也就是每一个元素都去尝试嵌套搜索,每搜索一个就让统计长度加一。同时访问过的元素都覆盖为-1做标记,代表访问过了,这样做的好处可以减少重复的访问。每一个位置上能搜索最深的嵌套深度和前序的maxNest做比较,大就替换,最后追历完一追数组,maxNest就是最大集合了。

解:

class Solution {

public int arrayNesting(int[] nums) {

int max = 0;

for (int i = 0; i < nums.length; i++) {

int cnt = 0;//每遍历一个元素都声明一个cnt=0,统计当前元素对应的环的不重复最大深度是多少

for (int j = i; nums[j] != -1; ) {

cnt++;

int t = nums[j];//t作为下一个元素的嵌套

nums[j] = -1; // 标记该位置已经被访问

j = t;

}

max = Math.max(max, cnt);

}

return max;

}

}