|
22 | 22 | <pre>
|
23 | 23 | <strong>Input:</strong> nums = [5,4,0,3,1,6,2]
|
24 | 24 | <strong>Output:</strong> 4
|
25 |
| -<strong>Explanation:</strong> |
| 25 | +<strong>Explanation:</strong> |
26 | 26 | nums[0] = 5, nums[1] = 4, nums[2] = 0, nums[3] = 3, nums[4] = 1, nums[5] = 6, nums[6] = 2.
|
27 | 27 | One of the longest sets s[k]:
|
28 | 28 | s[0] = {nums[0], nums[5], nums[6], nums[2]} = {5, 6, 2, 0}
|
@@ -51,13 +51,99 @@ s[0] = {nums[0], nums[5], nums[6], nums[2]} = {5, 6, 2, 0}
|
51 | 51 | ### **Python3**
|
52 | 52 |
|
53 | 53 | ```python
|
54 |
| - |
| 54 | +class Solution: |
| 55 | + def arrayNesting(self, nums: List[int]) -> int: |
| 56 | + n = len(nums) |
| 57 | + vis = [False] * n |
| 58 | + res = 0 |
| 59 | + for i in range(n): |
| 60 | + if vis[i]: |
| 61 | + continue |
| 62 | + cur, m = nums[i], 1 |
| 63 | + vis[cur] = True |
| 64 | + while nums[cur] != nums[i]: |
| 65 | + cur = nums[cur] |
| 66 | + m += 1 |
| 67 | + vis[cur] = True |
| 68 | + res = max(res, m) |
| 69 | + return res |
55 | 70 | ```
|
56 | 71 |
|
57 | 72 | ### **Java**
|
58 | 73 |
|
59 | 74 | ```java
|
| 75 | +class Solution { |
| 76 | + public int arrayNesting(int[] nums) { |
| 77 | + int n = nums.length; |
| 78 | + boolean[] vis = new boolean[n]; |
| 79 | + int res = 0; |
| 80 | + for (int i = 0; i < n; i++) { |
| 81 | + if (vis[i]) { |
| 82 | + continue; |
| 83 | + } |
| 84 | + int cur = nums[i], m = 1; |
| 85 | + vis[cur] = true; |
| 86 | + while (nums[cur] != nums[i]) { |
| 87 | + cur = nums[cur]; |
| 88 | + m++; |
| 89 | + vis[cur] = true; |
| 90 | + } |
| 91 | + res = Math.max(res, m); |
| 92 | + } |
| 93 | + return res; |
| 94 | + } |
| 95 | +} |
| 96 | +``` |
| 97 | + |
| 98 | +### **C++** |
| 99 | + |
| 100 | +```cpp |
| 101 | +class Solution { |
| 102 | +public: |
| 103 | + int arrayNesting(vector<int>& nums) { |
| 104 | + int n = nums.size(); |
| 105 | + vector<bool> vis(n); |
| 106 | + int res = 0; |
| 107 | + for (int i = 0; i < n; ++i) { |
| 108 | + if (vis[i]) continue; |
| 109 | + int cur = nums[i], m = 1; |
| 110 | + vis[cur] = true; |
| 111 | + while (nums[cur] != nums[i]) { |
| 112 | + cur = nums[cur]; |
| 113 | + ++m; |
| 114 | + vis[cur] = true; |
| 115 | + } |
| 116 | + res = max(res, m); |
| 117 | + } |
| 118 | + return res; |
| 119 | + } |
| 120 | +}; |
| 121 | +``` |
60 | 122 |
|
| 123 | +### **Go** |
| 124 | +
|
| 125 | +```go |
| 126 | +func arrayNesting(nums []int) int { |
| 127 | + n := len(nums) |
| 128 | + vis := make([]bool, n) |
| 129 | + ans := 0 |
| 130 | + for i := 0; i < n; i++ { |
| 131 | + if vis[i] { |
| 132 | + continue |
| 133 | + } |
| 134 | + cur, m := nums[i], 1 |
| 135 | + vis[cur] = true |
| 136 | + for nums[cur] != nums[i] { |
| 137 | + cur = nums[cur] |
| 138 | + m++ |
| 139 | + vis[cur] = true |
| 140 | + } |
| 141 | + if m > ans { |
| 142 | + ans = m |
| 143 | + } |
| 144 | + } |
| 145 | + return ans |
| 146 | +} |
61 | 147 | ```
|
62 | 148 |
|
63 | 149 | ### **...**
|
|
0 commit comments