代码随想录训练营第十三天| 239. 滑动窗口最大值 ,347.前 K 个高频元素

今天是第十三天,是队列相关,难度不小

 239. 滑动窗口最大值

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        
        int n = nums.length;
        if(n<2){
            return nums;
        }
        
        Deque<Integer> q = new LinkedList();
        int[] res = new int[n - k + 1];
        for(int i=0; i<n; i++){
            while(!q.isEmpty()&&nums[q.peekLast()]<=nums[i]){
                q.pollLast();
            }
            q.addLast(i);
            if(q.peek()<=i-k){
                q.poll();
            }
            if(i-k+1>=0){
                res[i-k+1] = nums[q.peek()];
            }
        }
        return res;
    }
}

使用双向队列,遍历数组,如果数组的数大于队列中的数字,那就清空队列,让这个最大值当head,如果再遇到更大的值,以此类推,不然就让比他小的值存在队列尾部。

 

347. 前k个高频元素

等二刷在做这道题

 

今天难度很大,今天的题目得再熟悉一下了。

posted @ 2022-10-24 14:13  小猫Soda  阅读(29)  评论(0)    收藏  举报