求数组中,是否存在两个相同元素的小标差小于k。hash题目。
class Solution { public: bool containsNearbyDuplicate(vector<int>& nums, int k) { map<int, int> mNums; mNums.clear(); for (int i = 0;i < nums.size();i++) { map<int,int>::iterator it = mNums.find(nums[i]); if (mNums.end() == it) { mNums.insert(pair<int,int>(nums[i], i)); } else { if (i - it->second <= k) { return true; } mNums.erase(it); mNums.insert(pair<int,int>(nums[i], i)); } } return false; } };