정수형 데이터가 담긴 벡터가 주어지고 임의의 수 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;
}
};