leetcode565数组嵌套C++

目录

  • 1.链接:
  • 2.问题描述,示例,和提示:
  • 3.代码:
  • 4.题目解析:
  • 5.代码解析:

1.链接:

链接: 565. 数组嵌套

2.问题描述,示例,和提示:

leetcode565数组嵌套C++_第1张图片

3.代码:

class Solution {
public:
    int arrayNesting(vector<int>& nums) {
        int ret = 0;
        for(int i = 0;i<nums.size();i++)
        {
            int now = 0;
            while(nums[i]<nums.size())
            {
                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.所以开始经过遍历的时候,我们每遍历一次就将这个元素置为终止元素。

你可能感兴趣的:(leetcode,牛客日常,c++,leetcode,算法)