leetcode 219. 存在重复元素 II(Contains Duplicate II)

题目描述:

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

示例 1:

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

示例 2:

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

示例 3:

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

算法:

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        unordered_map<int, int> mp;
        int sz = nums.size();
        for(int i = 0; i < sz; i++){
            if(mp.find(nums[i]) == mp.end()){
                mp[nums[i]] = i;
            }else{
                if(i - mp[nums[i]] <= k){
                    return true;
                }else{
                    mp[nums[i]] = i;
                }
            }
        }
        return false;
    }
};
posted @ 2019-03-21 10:31  zhanzq1  阅读(77)  评论(0)    收藏  举报