219 Contains Duplicate II 存在重复 II

给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使 nums [i] = nums [j],并且 i 和 j 的绝对差值最大为 k。

详见:https://leetcode.com/problems/contains-duplicate-ii/description/

Java实现:

class Solution {
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        int n=nums.length;
        if(n==0||nums==null){
            return false;
        }
        Map<Integer,Integer> m=new HashMap<Integer,Integer>();
        for(int i=0;i<n;++i){
            if(m.containsKey(nums[i])&&(i-m.get(nums[i])<=k)){
                return true;
            }
            m.put(nums[i],i);
        }
        return false;
    }
}

C++实现:

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        int size=nums.size();
        if(size==0||nums.empty())
        {
            return false;
        }
        unordered_map<int,int> m;
        for(int i=0;i<size;++i)
        {
            if(m.find(nums[i])!=m.end()&&i-m[nums[i]]<=k)
            {
                return true;
            }
            m[nums[i]]=i;
        }
        return false;
    }
};

 

posted on 2018-04-08 23:08  lina2014  阅读(178)  评论(0编辑  收藏  举报

导航