219. Contains Duplicate II

題目

219. Contains Duplicate II

解題思路

這道題如果用嵌套循環會超時,所以我用了map。

思路簡單,有2個點需要注意:

  • 當nums爲空或k爲0的時候一定是false

  • k有可能大於nums數組長度

具體代碼

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        if (nums.empty() || !k)
            return false;
        k = k < nums.size() - 1 ? k : nums.size() - 1;
        map<int, int> tmp;
        for (int i = 0; i < nums.size(); i++) {
            if (tmp.find(nums[i]) != tmp.end() && i - tmp[nums[i]] <= k) {
                return true;
            }
            else {
                tmp[nums[i]] = i;
            }
        }
        return false;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章