程式語言 - LeetCode - C++ - 565. Array Nesting



題目:


解答:

class Solution {
public:
    int arrayNesting(vector<int>& nums) {
        int n = nums.size();
        vector<bool> visited(n, false);

        auto dfs = [&](this auto&& dfs, int cur) -> int {
            if (visited[cur]) {
                return 0;
            }

            visited[cur] = true;
            return 1 + dfs(nums[cur]);
        };

        int ans = 0;

        for (int i = 0; i < n; ++i) {
            ans = max(ans, dfs(i));
        }

        return ans;
    }
};