Contains Duplicate II

ㅋㅋ·2022년 10월 21일
0

알고리즘-leetcode

목록 보기
38/135

정수형 데이터가 담긴 벡터가 주어지고 임의의 수 k가 주어진다.

데이터들마다 인덱스가 k 만큼 차이나는 수 중에 중복된 수가 있는지 체크하는 문제

if there are two distinct indices i and j in the array such that nums[i] == nums[j] and abs(i - j) <= k.

class Solution {
public:
    bool PushNoDuplication(unordered_set<int> &saver, int value)
    {
        if (0 < saver.count(value))
        {
            return false;
        }

        saver.insert(value);
        return true;
    }

    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        
        unordered_set<int> saver{};
        int numsSize = nums.size();

        for (int i = 0; i < numsSize && i <= k; i++)
        {
            if (PushNoDuplication(saver, nums[i]) == false)
            {
                return true;
            }
        }

        for (int i = 0; i + k + 1 < numsSize; i++)
        {
            saver.erase(nums[i]);

            if (PushNoDuplication(saver, nums[i + k + 1]) == false)
            {
                return true;
            }
        }

        return false;
    }
};

0개의 댓글