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 absolute difference between i and j is at most k.

Example 1:

Input: nums = 3
Output: true

Example 2:

Input: nums = 1
Output: true

Example 3:

Input: nums = 2
Output: false

 

这道题是之前那道 评论区十二楼 所示,但是由于后来题目要求变了,那么就没啥歧义了,正确解法如下:

 

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

 

Github 同步地址:

https://github.com/grandyang/leetcode/issues/219

 

类似题目:

Contains Duplicate

Contains Duplicate III

 

参考资料:

https://leetcode.com/problems/contains-duplicate-ii/

https://leetcode.com/problems/contains-duplicate-ii/discuss/61372/Simple-Java-solution

https://leetcode.com/problems/contains-duplicate-ii/discuss/61390/C%2B%2B-solution-with-unordered_set

 

LeetCode All in One 题目讲解汇总(持续更新中...)

相关文章:

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