Remove Duplicates from Sorted Array II - LeetCode

깽깽이·2024년 2월 4일
0

정렬된 원소의 개수 중 연속되어 나타내는 수의 개수가 3개 이상일 시에 2개만 존재하도록 그 외의 숫자를 삭제하는 요구사항으로 간단해 보이나 여분의 메모리를 할당하지 않아야하며, O(1) 복잡도 내외로 문제 풀이가 완료되어야 한다.

결론적으로 3개 이상의 수가 연속될 시 vector 내 erase API 사용하여 삭제하는 방향의 풀이를 진행했으나, API 내 복잡도를 고려하지 않은 방향의 풀이로 출제 의도와 동일한 해법은 아닌 것으로 판단됨. 다만 0ms 내외의 소요 시간은 확인함.

int calculate(std::vector<int>& nums){

    if(nums.size() <= 2) return nums.size();

    for(int k = 2; k < nums.size(); k++){
        if(nums[k] == nums[k - 1] && nums[k] == nums[k-2]){
            nums.erase(nums.begin() + k);
            k--;
        }
    }

    return nums.size();
}
profile
당신의 연주에 틀린 음은 없다. 그 다음의 음이 결정한다.

0개의 댓글