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循环写法比较简洁。
【代码】
【结果】
|