直观思考,一次遍历
n
u
m
s
nums
nums ,对遍历到的每个位置
i
i
i ,进行嵌套遍历,标记已遍历的数,在接下来的遍历,就不考虑已标记过的数了。
提示 : 嵌套数组是个环,对
i
i
i 嵌套遍历,一定会回到
i
i
i 。
class Solution {
public:
int arrayNesting(vector<int>& nums) {
bool visit[nums.size()];
memset(visit,false,sizeof visit);
int ans = 0;
for(int i = 0;i<nums.size();i++){
int len = 0;
while(!visit[i]){
visit[i] = true;
i=nums[i];
len++;
}
ans = max(ans,len);
}
return ans;
}
};
class Solution {
public:
int arrayNesting(vector<int>& nums) {
int ans = 0;
for(int i = 0;i<nums.size();i++){
int len = 0;
while(-1!=nums[i]){
int t = i;
i=nums[i];
nums[t] = -1;
len++;
}
ans = max(ans,len);
}
return ans;
}
};
理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。

