看似比较复杂的题目其实是一道关于关于有向图图求最大回路的问题,如果画出来的话其实也挺好理解的,代码如下,每次就遍历到底然后计算最大回路即可
class Solution {
public:
int arrayNesting(vector<int>& nums) {
vector<bool> vit(nums.size());//用于记录是否访问过
int res=-1;//存放结果
for(int i=0;i<nums.size();i++){
int cut=0;//计算每次的最大回路
while(!vit[i]){
vit[i]= true;
i = nums[i];
++cut;
}
res = max(cut,res);
}
return res;
}
};
比较难理解的就是那个i,作用域好像仅仅对循环内有效,跳出后立马重置