오름차순으로 정렬된 배열 nums가 주어졌을때 각 요소가 한번만 나타나도록 중복요소를 '제자리에서' 제거해야 합니다. '상대적 순서'는 동일하게 유지해야 합니다. 고유한 요소 갯수를 반환해야 합니다.
고유한 요소 갯수를 k로 간주하고
1. k개 요소는 고유한 요소를 포함해야합니다. 나머지요소는 nums의 크기와 마찬가지로 중요하지 않습니다
2. k를 반환해야 합니다
2. Remove Element 에서의 경험으로 직접적으로 삭제하지 않고 문제의 요구사항을 충족하는 최적의 코드를 짜봤습니다.
오름차순으로 정렬되어 있는 상태이므로 고유값을 변수에 저장해서 첫값부터 차근차근 비교해나가는 반복문으로 풀어봤습니다.
class Solution {
public int removeDuplicates(int[] nums) {
int prev = nums[0];
int k = 1;
for (int i = 1; i < nums.length; i++) {
if (prev != nums[i]) {
nums[k] = nums[i];
k++;
prev = nums[i];
}
}
return k;
}
}
Runtime 1ms