Array Nesting
来源:互联网 发布:isight9.0软件下载 编辑:程序博客网 时间:2024/05/17 07:58
A zero-indexed array A consisting of N different integers is given. The array contains all integers in the range [0, N - 1].
Sets S[K] for 0 <= K < N are defined as follows:
S[K] = { A[K], A[A[K]], A[A[A[K]]], ... }.
Sets S[K] are finite for each K and should NOT contain duplicates.
Write a function that given an array A consisting of N integers, return the size of the largest set S[K] for this array.
Example 1:
Input: A = [5,4,0,3,1,6,2]Output: 4Explanation: A[0] = 5, A[1] = 4, A[2] = 0, A[3] = 3, A[4] = 1, A[5] = 6, A[6] = 2.
One of the longest S[K]:S[0] = {A[0], A[5], A[6], A[2]} = {5, 6, 2, 0}
Note:
- N is an integer within the range [1, 20,000].
- The elements of A are all distinct.
- Each element of array A is an integer within the range [0, N-1].
想到的brute force解法,但是肯定会超时的。
这道题利用的一个思路是,用一个数组记录已经访问过的节点。有一个已知条件需要用上,就是每个元素都不相同,所以才可以使用这个办法。在进行循环的时候,你不需要担心已经访问过的点会不会被其他点访问到,因为只有一种情况可以访问到该点。利用这个条件,就可以在遍历的时候,把访问过的下标设置成true,在外层循环的时候跳过这些访问过的点(因为已经访问过这个点,所以肯定比由它开始的距离要远)。
代码:
public int arrayNesting(int[] nums) { if(nums == null || nums.length == 0) return 0; boolean[] visited = new boolean[nums.length]; int maxCount = 0; for(int i=0;i<nums.length;i++) { if(visited[i] != true) { int curCount = 0; int curIndex = i; do { curCount++; curIndex = nums[curIndex]; visited[curIndex] = true; } while(curIndex != i); maxCount = Math.max(maxCount, curCount); } } return maxCount; }
阅读全文
0 0
- Array Nesting
- Array Nesting
- Array Nesting
- [leetcode]565. Array Nesting
- [LeetCode]565. Array Nesting
- 565. Array Nesting
- LeetCode * 565. Array Nesting
- [LeetCode]565. Array Nesting
- 565. Array Nesting
- leetcode565. Array Nesting
- 565. Array Nesting
- leetcode 565. Array Nesting
- leetcode 565. Array Nesting
- 565. Array Nesting
- [LeetCode] 565. Array Nesting
- [leetcode]565. Array Nesting
- leetcode array nesting
- [leetCode]565. Array Nesting
- Beginning Spring学习笔记——第6章(二)使用Spring进行声明式事务管理
- Kaggle:数据践行者的好去处(如何开展大数据的实践?)
- Replace Words
- Beginning Spring学习笔记——第6章(三)使用Spring进行编程式事务管理
- eclipse下载插件速度很慢解决方案
- Array Nesting
- 程序员的八重境界
- 如何理解keras中的shape/input_shape
- keras中的层layer
- Java集合(一)-List与ArrayList(扩容与装箱和取消装箱)
- Java中Vector,ArrayList和LinkedList的区别
- [Nodejs] Debug-Ternimal
- MyBatis接口与xml写法对照表
- 程序员开发必备网站集合。