219. Contains Duplicate II

1.描述

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.

2.分析

用集合s存放最大距離為k之間的數(shù)組元素,依次遍歷數(shù)組。
放入規(guī)則:遍歷數(shù)組元素為nums[i],在集合s中查找nums[i]是否在集合中,如果在,則返回true。
取出規(guī)則:遍歷數(shù)組元素為nums[i],如果i>k, 則從集合中取出nums[i-k-1]。

3.代碼

class Solution {
public:
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        if (k <= 0) return false;
        if (k > nums.size()) k = nums.size() - 1;
        unordered_set<int> s;
        for (int i = 0; i < nums.size(); ++i) {
            if (i > k) s.erase(nums[i-k-1]);
            if (s.find(nums[i]) != s.end()) return true;
            s.insert(nums[i]);
        }
        return false;
    }
};
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容