当前位置: 代码迷 >> 综合 >> 1438. 绝对差不超过限制的最长连续子数组(双指针)
  详细解决方案

1438. 绝对差不超过限制的最长连续子数组(双指针)

热度:9   发布时间:2024-02-02 16:49:36.0

 

注意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;}
};