220.存在重复元素III

本题的常规思路就是那样,利用有序集合来做,
比较蛋疼的一点是它的数据范围,用int会溢出,需要用long long数据类型,注意要把set,还有计算过程进行手动类型转换

class Solution {
public:
    bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t) {
        set<long long> rec;
        int n=nums.size();
        for(int i=0;i<n;i++){
            if(rec.lower_bound(nums[i]-(long long)t)!=rec.end()){
                auto m=rec.lower_bound(nums[i]-(long long)t);
                long long val=*m;
                if(val<=nums[i]+(long long)t)
                    return true;
            }
            rec.insert(nums[i]);
            if(rec.size()==k+1)
                rec.erase(nums[i-k]);
        }
        return false;
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容