Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
给一个数组, 和一个数, 求数组的子数组最大的长度,使其中的元素的绝对值不大于这个数.
简单的双指针遍历, 注意一下边界.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
class Solution { public: int longestSubarray(vector<int>& nums, int limit) { multiset <int, greater <int> > ms; int res = 1; int left = 0; int right = 0; while(right < nums.size()){ ms.insert(nums[right++]); while(abs(*ms.begin() - *ms.rbegin()) > limit){ ms.erase(ms.find(nums[left++])); } res = max(res, right - left); } return res; } }; |