전제
내림차순으로 정렬된 배열 nums가 주어졌을때 중복되는 요소들은 오직 하나만 남도록 제거하고 내림차순으로 정렬된 형태로 나타낸다.
중복이 제거된 요소들은 nums의 길이가 되고 이 길이의 값은 k로 반환된다.
새로운 배열 객체 없이 수행되어야한다.
int[] nums = [...]; // Input array
int[] expectedNums = [...]; // The expected answer with correct length
int k = removeDuplicates(nums); // Calls your implementation
assert k == expectedNums.length;
for (int i = 0; i < k; i++) {
assert nums[i] == expectedNums[i];
}
위의 코드로 기능을 점검한다.
예제1
입력: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
출력: [1,2,2,3,5,6]
설명 : 병합할 배열은 [1,2,3]과 [2,5,6]이다.
병합 결과는 [1,2,2,3,5,6]이다.
예제2
입력: nums = [1,1,2]
출력: 2, nums = [1,2,_]
설명 : k = 2와 함께 nums의 요소들은 첫 번째 부터 순서대로 1,2를 나타낸다.
그 뒤의 요소는 무엇을 남기든 문제없다.
제약 조건
1 <= nums.length <= 3 * 104
-100 <= nums[i] <= 100
nums is sorted in non-decreasing order.
class Solution {
public int removeDuplicates(int[] nums) {
int index = 0;
for(int i = 0; i<nums.length; i++) {
if(nums[index] != nums[i]) {
nums[++index] = nums[i];
}
}
return index+1;
}
}