Leetcode 88. 219. 存在重複元素 II 思維 map

給定一個整數數組和一個整數 k,判斷數組中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的絕對值最大爲 k

示例 1:

輸入: nums = [1,2,3,1], k = 3
輸出: true

示例 2:

輸入: nums = [1,0,1,1], k = 1
輸出: true

示例 3:

輸入: nums = [1,2,3,1,2,3], k = 2
輸出: false

 

面試就掛在了這道題上。心痛啊。。。想到了優先隊列,沒想到用map啊。

用map來記錄數值的索引,抽到相同元素來判斷索引差值是否小於等於k。

class Solution{
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k)
    {
        map<int,int>mp;
        if(k<0)
            return false;
        for(int i=0;i<nums.size();i++)
        {
            if(mp.count(nums[i]))
            {
                if(k>=i-mp[nums[i]])
                    return true;
            }
            mp[nums[i]]=i;
        }
        return false;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章