Leetcode Java Array Nesting
업데이트:
문제
코드
class Solution {
public int arrayNesting(int[] nums) {
int max = 0;
for (int i = 0; i < nums.length; i++) {
int length = 0;
for (int j = i; nums[j] >= 0; length++) {
int temp = nums[j];
nums[j] = -1;
j = temp;
}
max = Math.max(max, length);
}
return max;
}
}
결과
설명
- 아래의 조건을 만족하는 집합의 가장 긴 길이를 구하는 문제이다.
- s[k] = {nums[k], nums[nums[k]], nums[nums[nums[k]]], … }
-
최대 길이를 저장할 max를 정의하고, 0으로 초기화한다.
- 0부터 nums의 길이 미만까지 i를 증가시키며 아래를 반복한다.
- 부분 길이를 저장할 length를 0으로 초기화 한다.
- i부터 nums[j]가 0 이상일 때 까지 j를 증가시키며 아래를 반복한다.
- temp에 nums의 j번째 값을 넣어주고 nums의 j번째 값에 -1을 넣어 방문 기록을 남긴다.
- j에 temp를 넣어준다.
- 반복이 완료되면 max에 max와 length중 큰 값을 넣어준다.
- 반복이 완료되면 조건을 만족하는 가장 길 길이인 max를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기