给定一个整数数组和一个整数 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;
    }
};

 

相关文章:

  • 2021-07-25
  • 2021-08-20
  • 2021-06-12
  • 2022-01-14
  • 2022-12-23
猜你喜欢
  • 2021-07-31
  • 2022-02-22
  • 2021-05-10
  • 2021-07-22
相关资源
相似解决方案