Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

hwooo

LeetCode (C/C++) 565. Array Nesting 본문

Study/Algorithm

LeetCode (C/C++) 565. Array Nesting

hwooo 2024. 11. 28. 21:56

https://leetcode.com/problems/array-nesting/description/

 

 


풀이

현재 지점에 방문하지 않았더라면 해당 지점을 방문해서 사이클 내의 노드 수를 찾는다.

같은 사이클 내의 지점들은 모두 같은 수의 노드를 방문하고 사이클이 종료되므로 방문 처리 후 최대 노드 수를 갱신한다.


코드

class Solution {
public:
    bool visited[1'000'000];
    int dfs(vector<int>& nums, int now, int nowDepth) {

        // 현재 지점이 방문했던 곳이라면 현재 깊이 반환
        if (visited[now])
            return nowDepth;

        visited[now] = true;
        return dfs(nums, nums[now], nowDepth + 1);
    }

    int arrayNesting(vector<int>& nums) {
        int maxLen = 1;
        for (int i = 0; i < nums.size(); i++) {
            int num = nums[i];

            // 방문하지 않았다면 깊이 체크
            if (!visited[num])
                maxLen = max(maxLen, dfs(nums, num, 1) - 1);
        }
        return maxLen;
    }
};