0
点赞
收藏
分享

微信扫一扫

1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit

爱情锦囊 2022-05-02 阅读 58

给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit .

就是将数据排序,然后在排序好的数据中查找一个最大值和一个最小值,其之间的差值刚刚好大于limit.

multiset 是关联容器的一种,是排序好的集合(元素已经进行了排序),并且允许有相同的元素。

rbegin():指向多重集容器中最后一个元素的反向迭代器

class Solution {
public:
    int longestSubarray(vector<int>& nums, int limit) {
        multiset<int> m;
        int j=0,ans=1;
        for(int i=0;i<nums.size();i++)
        {
            m.insert(nums[i]);
            while(!m.empty() && *m.rbegin()-*m.begin()>limit)
                m.erase(m.find(nums[j++]));
            ans=max(ans,i-j+1);
        }
        return ans;
        
    }
};
举报

相关推荐

0 条评论