고유한 요소의 수를 출력하면 되는 문제이다.
Discussion을 확인하면 알 수 있지만 지문 자체가 굉장히 수준 낮을 뿐더러
ex) 오름차 순을 non-decreasing order
로 표현하는 등의 모호함
정말 고유한 항목의 수를 반환하더라도 거지같은 테스트 케이스로 반려나기 때문
풀이로 포인터를 하나 지정하여 요소가 고유한지 확인하며 고유한 요소의 수를 확인한다.
function removeDuplicates(nums: number[]): number {
// 배열이 비어있거나 하나의 요소만 있는 경우 바로 반환
if (nums.length <= 1) return nums.length;
// 고유한 요소를 추적할 포인터
let uniquePointer = 0;
// 배열을 순회
for (let i = 1; i < nums.length; i++) {
// 현재 요소가 고유 포인터가 가리키는 요소와 다른 경우
if (nums[i] !== nums[uniquePointer]) {
// 고유 포인터를 다음 위치로 이동
uniquePointer++;
// 현재 요소를 고유 포인터 위치에 복사
nums[uniquePointer] = nums[i];
}
// 같은 경우는 무시하고 계속 진행
}
// 고유한 요소의 개수는 uniquePointer + 1
// (0부터 시작했으므로 1을 더해줌)
return uniquePointer + 1;
}