LeetCode 219. Contains Duplicate II

题目

typedef long long int _int;
class Solution {
public:
        multiset<_int> m;
    bool containsNearbyDuplicate(vector<int>& nums, int k) {
        
        int i;
        for(i=0;i<nums.size()&&i<k+1;i++)
        {
            m.insert((_int)nums[i]);
        }
        
        for(int i=0;i<nums.size();i++)
        {
            if(m.size()<=1)
                break;
            
            multiset<_int>::iterator it = m.find((_int)nums[i]);
            
            if(it!=m.begin() && abs((*prev(it))-(*it)) <= (_int)0)
                return true;
            if(next(it)!=m.end() && abs((*next(it))-(*it)) <= (_int)0)
                return true;
            
            m.erase(it);
            if(i+k+1< nums.size())
                m.insert((_int)nums[i+k+1]);
                
        }
        
        return false;
        
    }
};
posted @ 2020-02-23 16:21  Shendu.CC  阅读(71)  评论(0编辑  收藏  举报