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;
}