[LeetCode] 26. Remove Duplicates from Sorted Array - Java[자바]

doxxx·2023년 8월 22일
0

LeetCode

목록 보기
3/25
post-thumbnail

링크

문제

정수 배열의 숫자가 감소하지 않는 순서로 정렬되어 있을 때, 각 고유 요소가 한 번만 나타나도록 중복된 요소를 제자리에서 제거합니다. 요소의 상대적 순서는 동일하게 유지해야 합니다. 그런 다음 고유 요소의 수를 nums로 반환합니다.

nums의 고유 요소 수를 k라고 가정하고, 이를 허용하려면 다음과 같은 작업을 수행해야 합니다:

  • nums의 처음 k 요소에 처음에 nums에 있던 순서대로 고유 요소가 포함되도록 배열 nums를 변경합니다. 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한 값만 남긴 후 다시 배열에 담았다.

0개의 댓글