- 题目描述:
- 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;
- }
- }
题目描述:


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