10 int n = (int)nums.size();
13 deque<int> max_deque, min_deque;
15 for (
int right = 0; right < n; ++right)
18 while (!max_deque.empty() && nums[max_deque.back()] < nums[right])
20 max_deque.push_back(right);
23 while (!min_deque.empty() && nums[min_deque.back()] > nums[right])
25 min_deque.push_back(right);
28 while (nums[max_deque.front()] - nums[min_deque.front()] > 2)
31 if (!max_deque.empty() && max_deque.front() < left)
32 max_deque.pop_front();
33 if (!min_deque.empty() && min_deque.front() < left)
34 min_deque.pop_front();
38 count += (right - left + 1);