Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the difference between i and j is at most k.
我的思路:
若数组元素个数numsSize小于k,则循环比较当前数组元素和后面所有数组元素是否相等,若相等则一定为true;
若数组元素个数numsSize大于k,则循环比较当前数组元素和后面k个数组元素是否相等,若相等则一定为true;
若没有返回,则返回false。
**
代码如下:
**
bool containsNearbyDuplicate(int* nums, int numsSize, int k) {
if(numsSize <= 1) return false;
int i, j;
if(numsSize > k)
{
for(i = 0; i < numsSize - 1; i++)
{
for(j = i + 1; j <= i + k && j < numsSize; j++)
{
if(nums[i] == nums[j])
{
if(j - i <= k)
return true;
}
}
}
}
else
{
for(i = 0; i < numsSize - 1; i++)
{
for(j = i + 1; j < numsSize; j++)
{
if(nums[i] == nums[j])
return true;
}
}
}
return false;
}