정수 배열의 숫자가 감소하지 않는 순서로 정렬되어 있을 때, 각 고유 요소가 한 번만 나타나도록 중복된 요소를 제자리에서 제거합니다. 요소의 상대적 순서는 동일하게 유지해야 합니다. 그런 다음 고유 요소의 수를 nums로 반환합니다.
nums의 고유 요소 수를 k라고 가정하고, 이를 허용하려면 다음과 같은 작업을 수행해야 합니다:
int[] nums = [...]; // 입력 배열
int[] expectedNums = [...]; // 올바른 길이의 예상 답변
int k = removeDuplicates(nums); // 구현을 호출합니다.
어서스트 k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}
위의 검증이 모두 통과되어야 합니다.
import java.util.*;
import java.util.stream.*;
class Solution {
public int removeDuplicates(int[] nums) {
List<Integer> list = Arrays.stream(nums).distinct()
.boxed().collect(Collectors.toList());
for(int i = 0; i < list.size(); i++) {
nums[i] = list.get(i);
}
return list.size();
}
}
stream의 distinct를 이용해서 unique한 값만 남긴 후 다시 배열에 담았다.