[LeetCode] 26. Remove Duplicates from Sorted Array

Chobby·2024년 8월 26일
1

LeetCode

목록 보기
63/194

고유한 요소의 수를 출력하면 되는 문제이다.

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;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글