Given an array of integers and an integer k, find out whether there there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between iand j is at most k.
Array Hash Table110道了,O(∩_∩)O,题目意思是给一个数组,判断数组中是否有序号差小于k且相等的两个数。
一开始用两个for循环,去查找,结果超时。看提示才知道用哈希表。
class Solution {
public:
bool containsNearbyDuplicate(vector<int>& nums, int k) {
if (!nums.size()) return false;
map<int, int> HashMap;
for (int i = 0; i < nums.size(); i++)
{
if (HashMap.find(nums[i]) != HashMap.end() && i - HashMap[nums[i]]<=k)
{
return true;
}
HashMap[nums[i]] = i;
}
return false;
}
};