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

    示例 1:

    1. 输入: nums = [1,2,3,1], k = 3
    2. 输出: true

    示例 2:

    1. 输入: nums = [1,0,1,1], k = 1
    2. 输出: true

    示例 3:

    1. 输入: nums = [1,2,3,1,2,3], k = 2
    2. 输出: false
    1. class Solution {
    2. public:
    3. bool containsNearbyDuplicate(vector<int>& nums, int k) {
    4. unordered_map<int, int> window;
    5. int left = 0;
    6. int right = 0;
    7. while(right < nums.size()){
    8. int right_value = nums[right];
    9. window[right_value]++;
    10. right++;
    11. if(window[right_value] == 2){
    12. return true;
    13. }
    14. if(right - left >k){
    15. window[nums[left]]--;
    16. left++;
    17. }
    18. }
    19. return false;
    20. }
    21. };