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

61 阅读1分钟

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

239. 滑动窗口最大值

题目链接:239. 滑动窗口最大值

 class MyQueue {
     Deque<Integer> deque = new LinkedList<>();
     void poll(int val){
         if(!deque.isEmpty() && val == deque.peek()){
             deque.poll();
         }
     }
 ​
     void add(int val){
         while(!deque.isEmpty() && val > deque.getLast()){
             deque.removeLast();
         }
         deque.add(val);
     }
 ​
     int peek(){
         return deque.peek();
     }
 }
 ​
 class Solution {
     public int[] maxSlidingWindow(int[] nums, int k) {
         int []maxArr = new int[nums.length - k + 1];
         MyQueue myque = new MyQueue();
         for(int i = 0; i < k; i++){
             myque.add(nums[i]);
         }
         maxArr[0] = myque.peek();
         for(int i = k; i < nums.length; i++){
             myque.add(nums[i]);
             myque.poll(nums[i - k]);
             maxArr[i - k + 1] = myque.peek();
         }
         return maxArr;
     }
 }

347. 前 K 个高频元素

题目链接:347. 前 K 个高频元素

  • 首先用unordered_map映射出每个元素的频率
  • Priority_queue建立小顶堆或者大顶堆的选择,需要用到comparison类