剑指 Offer 59 - I. 滑动窗口的最大值

    科技2022-08-16  124

    剑指 Offer 59 - I. 滑动窗口的最大值

    题目

    给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。

    解法

    class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums.length == 0 || k == 0) return new int[0]; Deque<Integer> dq = new LinkedList<>(); int len = nums.length; int[] res = new int[len-k+1]; for(int i = 0 ; i < k ; ++i){ int cur = nums[i]; while(!dq.isEmpty()&&dq.peekLast()<cur) dq.removeLast(); dq.addLast(cur); } res[0] = dq.peekFirst(); for(int i = k ; i < len ; ++i){ int cur = nums[i]; if(nums[i-k]==dq.peekFirst()) dq.removeFirst(); while(!dq.isEmpty()&&dq.peekLast()<cur) dq.removeLast(); dq.addLast(cur); res[i-k+1] = dq.peekFirst(); } return res; } }
    Processed: 0.015, SQL: 9