直接用遍历会超时,所以要先排序,连同初始index一起排序。
bool containsNearDuplicate(vector<int>& nums, int k)
{
if(nums.size() < 2)
return false;
vector<int> index;
for(int i = 0; i < nums.size(); i++)
index.push_back(i);
for(int i = 0; i < nums.size() - 1; i++)
{
int j = i + 1;
int flag = nums[j];
while(j > 0 && flag < nums[j - 1])
{
nums[j] = nums[j - 1];
index[j] = index[j - 1];
j--;
}
nums[j] = flag;
index[j] = i + 1;
}
for(int i = 0; i < nums.size() - 1; i++)
if(nums[i] == nums[i + 1] && abs(index[i] - index[i + 1]) <= k)
return true;
return false;
}