Array Nesting
int arrayNesting(vector<int>& nums) {
int start = 0;
//每次的起始位置
int cnt = 0;
//某次查找到的数组长度
int res = 0;
//最大长度
if(nums.size() == 0) return 0;
vector<bool> visited(nums.size(), false);
// 对于数组中的每个元素 作为寻找的起始点
for(int i = 0; i < nums.size(); i ++) {
cnt = 0;
start = nums[i];
// 起始位置为i
//在此位置上的array nesting
while(start != i && !visited[i]) {
//cout<<"cnt "<<cnt<<endl;
//if(!visited[i]) {
start = nums[start];
// array nesting
visited[start] = true;
cnt ++;
//}
//cout<<start<<" "<<i<<endl;
}
//没有循环回去
cnt ++;
res = (res > cnt) ? res : cnt;
}
return res;
}