Leetcode Java Minimum Number of Operations to Make Elements in Array Distinct
업데이트:
문제
코드
class Solution {
public int minimumOperations(int[] nums) {
boolean[] seen = new boolean[101];
for (int i = nums.length - 1; i >= 0; i--) {
if (seen[nums[i]]) {
return (i + 3) / 3;
} else {
seen[nums[i]] = true;
}
}
return 0;
}
}
결과
설명
-
남은 배열 내 값이 고유한 값이 되도록 배열 시작의 세 값들을 계속 제거할 때, 제거 횟수를 구하는 문제이다.
-
seen은 동일한 값 발생 여부를 확인하기 위한 배열로, 최대 가능한 값보다 1 큰 101 크기의 부울 배열로 초기화한다.
- nums의 길이보다 1 낮은 값부터 0 이상까지 i를 증가시키며 아래를 반복한다.
- seen[nums[i]]의 값이 true이면, 남은 값들을 제거하는 최소 횟수인 $\frac{i + 3}{3}$의 몫을 주어진 문제의 결과로 반환한다.
- seen[nums[i]]의 값이 false이면, 본 값을 체크하기 위해서 seen의 해당 위치에 true를 넣어준다.
- 반복이 완료되면 0을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기