hwooo
LeetCode (C/C++) 565. Array Nesting 본문
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;
}
};
'Study > Algorithm' 카테고리의 다른 글
LeetCode (C/C++, Java) 93. Restore IP Addresses (0) | 2024.12.03 |
---|---|
LeetCode (C/C++, Java) 2290. Minimum Obstacle Removal to Reach Corner (0) | 2024.12.02 |
프로그래머스 (C/C++) 42888 : 오픈채팅방 (0) | 2024.11.28 |
LeetCode (C/C++) 1306. Jump Game III (0) | 2024.11.27 |
LeetCode (C/C++) 313. Super Ugly Number (0) | 2024.11.26 |