leetcode---Contains Duplicate III

来源:互联网 发布:淘宝设置自动关闭订单 编辑:程序博客网 时间:2024/06/07 23:40

Given an array of integers, find out whether there are two distinct indices i and j in the array such that the difference between nums[i] and nums[j] is at most t and the difference between i and j is at most k.

 

class Solution {public:    bool containsNearbyAlmostDuplicate(vector<int>& nums, int k, int t)     {        int n = nums.size();        map<int, bool> m;        int first = 0;        for(int i=0; i<n; i++)        {            if(i - first > k && m[nums[first]] == true)            {                m.erase(nums[first]);                ++first;            }            auto it = m.lower_bound(nums[i]-t);            if(it != m.end() && abs(nums[i] - it->first) <= t)                return true;            m[nums[i]] = true;        }        return false;    }};


 

0 0