219. Contains Duplicate II

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了219. 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 jis at most k.


解题思路:

用一个表,记录扫描过程中,每个数字出现的最近

一次位置,则当前位置和最近位置的差小于k时 返回true,

bool containsNearbyDuplicate(vector<int>& nums, int k) {
        int size=nums.size();
        if(size<=1||k<=0)
            return false;
        
        unordered_map<int,int> table;
        
        for(int i=0;i<size;++i){
            auto it=table.find(nums[i]);
            if(it==table.end())
                table[nums[i]]=i;
            else{
                if(i-table[nums[i]]<=k)
                    return true;
                it->second=i;
            }
        }
        return false;
    }



以上是关于219. Contains Duplicate II的主要内容,如果未能解决你的问题,请参考以下文章

219.Contains Duplicate II

219. Contains Duplicate II

219. Contains Duplicate II

219. Contains Duplicate II

219. Contains Duplicate II

Leetcode 219 Contains Duplicate II STL