今天又是不会队列的一天

    1. public int longestSubarray(int[] nums, int limit) {
    2. Deque<Integer> queMax = new LinkedList<Integer>();
    3. Deque<Integer> queMin = new LinkedList<Integer>();
    4. int n = nums.length;
    5. int left = 0, right = 0;
    6. int ret = 0;
    7. while (right < n) {
    8. while (!queMax.isEmpty() && queMax.peekLast() < nums[right]) {
    9. queMax.pollLast();
    10. }
    11. while (!queMin.isEmpty() && queMin.peekLast() > nums[right]) {
    12. queMin.pollLast();
    13. }
    14. queMax.offerLast(nums[right]);
    15. queMin.offerLast(nums[right]);
    16. while (!queMax.isEmpty() && !queMin.isEmpty() && queMax.peekFirst() - queMin.peekFirst() > limit) {
    17. if (nums[left] == queMin.peekFirst()) {
    18. queMin.pollFirst();
    19. }
    20. if (nums[left] == queMax.peekFirst()) {
    21. queMax.pollFirst();
    22. }
    23. left++;
    24. }
    25. ret = Math.max(ret, right - left + 1);
    26. right++;
    27. }
    28. return ret;
    29. }