Contains Duplicate II

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章