관리 메뉴

sleepyotter

LeetCode/448.Find All Numbers Disappeared in an Array 본문

프로그래밍/알고리즘+코딩테스트

LeetCode/448.Find All Numbers Disappeared in an Array

sleepyotter. 2022. 2. 16. 11:58

배열을 하나 선언하고 등장한 녀석은 지우고 등장하지 않은 녀석만 태워서 반환한다. unordered_set을 이용한 풀이도 있는데, 해시 충돌이 일어날 만큼의 원소개수는 아닌거 같은데 이상하게 3*O(N)인 내 코드가 2배는 빠르다. unordered_set은 2*O(N)

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        int* nums2 = new int[nums.size()];
        vector<int> ret;
        for(int i=0; i< nums.size(); ++i)
        {
            nums2[i] = i+1;
        }
        
        for(int i=0; i<nums.size(); ++i)
        {
            if(nums2[nums[i]-1]!=0)
            {
                nums2[nums[i]-1]=0;
            }
        }
        
        for(int i=0; i<nums.size(); ++i)
        {
            if(nums2[i]!=0)
                ret.push_back(nums2[i]);
        }
        delete[] nums2;
        return ret;
    }
};