multiset可以记录一个集合中的所有元素,同时会自动排序所有集合内元素,当集合中最大元素的值与最小的元素之差大于limit时,就把最先加入到数组的元素给弹出去。
class Solution {
public:
multiset<int> s;
int ans;
int longestSubarray(vector<int>& nums, int limit) {
int n=nums.size();
for(int i=0,j=0;i<n;i++)
{
s.insert(nums[i]);
cout<<*s.end()<<" "<<*s.rbegin()<<endl;
if(*s.rbegin()-*s.begin()>limit) s.erase(s.find(nums[j++]));
}
return s.size();
}
};