- 1.链接:
- 2.问题描述,示例,和提示:
- 3.代码:
- 4.题目解析:
- 5.代码解析:
链接: 565. 数组嵌套
2.问题描述,示例,和提示: 3.代码:class Solution {
public:
int arrayNesting(vector& nums) {
int ret = 0;
for(int i = 0;i
int now = 0;
while(nums[i]
int num = nums[i];
nums[i]=nums.size();
i = num;
now++;
}
ret = max(now,ret);
}
return ret;
}
};
4.题目解析:
给定一个数组nums
按照题目给定的方式,
我们可以看作,这个数组里面一定有很多的环,这些环不会相交
这些环里面的数据个数[1,nums.size()]之间
也就是当你从一个位置开始的时候,一定可以按照题目给定的方式回到原来的起点
5.代码解析:如果上面的文字看不懂,建议看一下这个视频
链接: 链接在这里
1.我们从头开始遍历
2.开始的元素经过遍历回到自己,此时将路径上所有元素已经遍历一遍了
3.再次遍历数组的时候,如果这个元素在以前经过遍历的时候遍历过一遍,那么就不需要再从这个元素开始,然后遍历了,
4.所以开始经过遍历的时候,我们每遍历一次就将这个元素置为终止元素。



