219. Contains Duplicate II

Posted 阿怪123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了219. Contains Duplicate II相关的知识,希望对你有一定的参考价值。

第一次尝试用暴力比较法,超时

public class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        int size=nums.length;
        boolean flag=false;
        for(int i=0;i<size-k-1;i++)
        {
            
            int a=nums[i];
            for(int j=i+1;j<=i+k;j++)
            {
                int b=nums[j];
                if(a==b)
                {
                    flag=true;
                    break;
                }
            }
            if(flag==true)
                break;
        }
        return flag;
    }
}

 

 

之后选择用hashmap的方法,节省时间复杂度

public class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        int size=nums.length;
        boolean flag=false;
        Map<Integer,Integer> mp=new HashMap<Integer,Integer>();
        
        for(int i=0;i<size;i++)
        {
            if(mp.containsKey(nums[i]))
            {
                if((i-mp.get(nums[i]))<=k)
                {
                   flag=true;
                   break;
                }
                else
                    mp.put(nums[i],i);
            }
            else
                mp.put(nums[i],i);
        }
        return flag;
    }
}

 

以上是关于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