Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position. Return the max sliding window.
// Other way to do this is using leftmax and rightmax arrays with boxed partitions// https://drive.google.com/file/d/14k1lhaQe9He5EouLXuSlXrMR61HUBMy1/view?usp=sharingclassSolution {publicint[] maxSlidingWindow(int[] nums,int k) {Deque<Integer> dq =newLinkedList<>();int[] ans =newint[nums.length- k +1];int index =0;for (int i =0; i <nums.length; i++) {// Removing the elements our of range 'k'while (dq.size() !=0&&dq.peekFirst() < i - (k -1))dq.pollFirst();// Maintaining increasing deque from right -> leftwhile (dq.size() !=0&& nums[dq.peekLast()] < nums[i])dq.pollLast();dq.addLast(i);// If our window of size 'k' is readyif (i >= k -1) { ans[index++] = nums[dq.peekFirst()]; } }return ans; }}