565  数组嵌套

                                                                                                                                                    点击此处返回总目录

 

 

【题目】

565  数组嵌套

 

 

 

【分析】

我们来看一下:a[0] = 5, a[5] = 6, a[6] = 2 , a[2]=0 , a[0]=2.....

所以{5,6,2,0}够成一个集合,无论从哪个数开始,都是这四个的循环。

同样a[1] = 4, a[4]=1。所以第二个集合为{4,1},含有2个元素。

同样a[3] = 3。第三个集合是{3}。含有1个元素。

这三个集合互相不包含,且他们的并集就是整个数组。

 

这有点类似于在图中找出所有的联通子图的操作。只要找到一个点就把这个点的图都一网打击。

 

 

小技巧如下:

1. 题中元素大小都是0~N-1的数,所以可以设置-1来标识数据被访问过,省去了visited[]数组。

2. 使用两个for循环写法比较简洁。

 

 

 

【代码】

565  数组嵌套

 

 

【结果】

565  数组嵌套