注意rbegin() 是最后一个数据,而end()是最后一个数据的后一个
rend()是第一个的前一个数据
这题应该是从最长连续不重复子序列改编过来的,但是做法是一样的
class Solution {
public:int longestSubarray(vector<int>& nums, int limit) {map<int,int>mp;int n=nums.size();int maxn=0;for(int i=0,j=0;i<n;i++){mp[nums[i]]++;while(j<=i&&mp.rbegin()->first-mp.begin()->first>limit){mp[nums[j]]--;if(mp[nums[j]]==0) mp.erase(nums[j]);j++;}maxn=max(maxn,i-j+1);}return maxn;}
};