/my solution/
class Solution {
public:
bool containsNearbyDuplicate(vector& nums, int k) {
for(int i = 0 ; i < nums.size() - 1; i++){
for(int j = i + 1; j < nums.size();j++){
if((nums[i] == nums[j]) && (j - i == k))
return true;
}
}
return false;
}
};
/网友版:96%/16%/
/*
1、*的方法有一个启发 就是重复元素的处理里边 可以巧妙的利用hash类容器的映射功能记录重复元素的下标值
事实上 hash类容器的映射值具有记录功能 这是很多问题都可以利用的一点
*/
class Solution {
public:
bool containsNearbyDuplicate(vector& nums, int k) {
unordered_map<int, int> hashmap;
for(int i = 0; i < nums.size(); ++i)
{
//在hash map中查找vector中特定的数值
if(hashmap.find(nums[i]) != hashmap.end())
{
//*hashmap[nums[i]]是与当前i的nums值相同的重复元素的下标值
if(i - hashmap[nums[i]] <= k)
return true;
else
hashmap[nums[i]] = i;
}
else
hashmap[nums[i]] = i;
}
return false;
}
};