LC 1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
class Solution { public: int longestSubarray(vector<int>& nums, int limit) { int n=nums.size(); deque<int> maxdq; deque<int> mindq; int right=0; int left=0; int res=1; while(right<n){ while(!maxdq.empty() && nums[right]>nums[maxdq.back()]){ maxdq.pop_back(); } maxdq.push_back(right); while(!mindq.empty() && nums[right]<nums[mindq.back()]){ mindq.pop_back(); } mindq.push_back(right); while(nums[maxdq.front()]-nums[mindq.front()]>limit){ if(maxdq.front()==left) maxdq.pop_front(); if(mindq.front()==left) mindq.pop_front(); ++left; } res=max(res,right-left+1); right++; } return res; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步