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;
    }
}
原文地址:https://www.cnblogs.com/aguai1992/p/5347279.html