Remove Duplicates From Sorted Array
December 25, 2024
문제 링크
해결 방법 1
function removeDuplicates(nums: number[]): number {
let k = 1;
for (let i = 1; i < nums.length; ++i) {
if (nums[i] !== nums[i - 1]) {
nums[k] = nums[i];
++k;
}
}
return k;
}
다음 조건의 숫자 배열을 인자로 받는다.
1. 1 <= nums.length <= 3 \* 10^4
2. -100 <= nums[i] <= 100
3. nums is sorted in non-decreasing order.
해야할 일은
- 숫자 배열이 가진 요소 중에 중복되는 숫자의 개수를 반환하고
- 숫자 배열의 앞에 각 중복되는 숫자를 하나씩 오름차순 정렬로 넣어야 한다. 숫자배열 뒤에는 뭐가 오든 상관 없다.
먼저 중복되는 숫자의 개수를 담을 변수 k를 선언한다. for문을 돌 건데, 돌면서 현재 숫자 배열 요소 값이 이전 숫자 배열 요소 값과 다른 지 비교한다. 이 때문에 i는 0이 아닌 1부터 시작한다. 비교 값이 다르면 k값을 숫자 배열의 키 값으로 사용하여 숫자 배열 앞 쪽에 값을 추가한다. 그리고 k값을 1 증가시킨다. 마지막으로 k값을 반환한다.
처음에 인자로 받는 숫자 배열의 요소를 직접 변경해야 하는 건지 몰라서 좀 해맸다. 이런 유형은 처음이라...