《LeetCode力扣练习》代码随想录——栈与队列(滑动窗口最大值---Java)

《LeetCode力扣练习》代码随想录——栈与队列(滑动窗口最大值—Java)



刷题思路来源于 代码随想录

239. 滑动窗口最大值
  • 队列
    class Solution {
        public int[] maxSlidingWindow(int[] nums, int k) {
    
            if(nums.length==1){
                return nums;
            }
    
            int[] result=new int[nums.length-(k-1)];
            Deque<Integer> queue=new ArrayDeque<>();
    
            for(int i=0;i<k;i++){
                this.offer(queue,nums[i]);
            }
    
            int num=0;
            result[num++]=this.getMax(queue);
    
            for(int i=k;i<nums.length;i++){
    
                this.poll(queue,nums[i-k]);
                this.offer(queue,nums[i]);
                result[num++]=this.getMax(queue);
    
            }
    
            return result;
    
        }
    
        private void poll(Deque<Integer> queue,int target){
    
            if(queue.size()!=0&&target==queue.peek()){
                queue.poll();
            }
    
            return;
    
        }
    
        private void offer(Deque<Integer> queue,int target){
    
            while(queue.size()!=0&&target>queue.peekLast()){
                queue.pollLast();
            }
    
            queue.offer(target);
    
            return;
    
        }
    
        private int getMax(Deque<Integer> queue){
    
            return queue.peek();
    
        }
    }
    

你可能感兴趣的:(LeetCode,leetcode,java,算法)