首页 > 其他分享 >不知道堆的我,第二题完全想不到,但是 思路都能AC i

不知道堆的我,第二题完全想不到,但是 思路都能AC i

时间:2022-12-21 22:23:58浏览次数:36  
标签:deque AC pq nums int 想不到 map new 思路

239. 滑动窗口最大值

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
MyQueue myQueue = new MyQueue();
        int max;// 入队
        int[] answer = new int[nums.length - k + 1];
        for (int i = 0; i < k; i++) {
            myQueue.add(nums[i]);
        }
        answer[0] = myQueue.peek();
        for (int i = k; i < nums.length; i++) {
            myQueue.poll(nums[i - k]);
            myQueue.add(nums[i]);
            answer[i - k + 1] = myQueue.peek();
        }
        return answer;
    }
}

class MyQueue {
    Deque<Integer> deque = new LinkedList<>();

    void add(int val) {
        while (!deque.isEmpty() && val > deque.getLast()) {
            deque.removeLast();
        }
        deque.add(val);
    }

    void poll(int val) {
        if (!deque.isEmpty() && val == deque.peek()) {
            deque.poll();
        }
    }

    Integer peek() {
        return deque.peek();
    }
}

347.前 K 个高频元素 (一刷至少需要理解思路)

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) {
            if (!map.containsKey(num)) {
                map.put(num, 1);
            } else {
                map.put(num, map.get(num) + 1);
            }
        }
        PriorityQueue<int[]> pq = new PriorityQueue<>(new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[1] - o2[1];
            }
        });
        for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
            if (pq.size() < k) {
                pq.add(new int[]{entry.getKey(), entry.getValue()});
            } else {
                if (entry.getValue() > pq.peek()[1]) {
                    pq.poll();
                    pq.add(new int[]{entry.getKey(), entry.getValue()});
                }
            }
        }
        int[] ans = new int[k];
        for (int i = 0; i < k; i++) {
            ans[i] = pq.poll()[0];
        }
        return ans;
        
    }
}

标签:deque,AC,pq,nums,int,想不到,map,new,思路
From: https://www.cnblogs.com/Chain-Tian/p/16997358.html

相关文章

  • Acwing 第 77 场周赛 ABC(*)
    4716.进球题目大意:整场比赛双方一共打进了n个进球,进球多的一方将收获最终的胜利。请你根据进球纪录,判断哪支球队最终获胜。保证不存在平局。输入样例1:1ABC......
  • SRS视频服务器CallBack的Demo
    1.安装环境(很麻烦,可以选择编译启动)官方文档快速开始docker配置:dockerrun--rm-it-p1935:1935-p1985:1985-p8080:8080-d\registry.cn-hangzhou.aliyuncs......
  • whctf2017_stackoverflow
    whctf2017_stackoverflow前几天做的一道题几乎都是看zikh26师傅的文章写的,自己太菜,源码也才开始看保护策略漏洞分析可以泄露我们想要的地址,还有一个可以任意地址写一......
  • oracle修改表结构
    --添加表字段altertablepublic_memoaddoperate_uservarchar2(10);public_memo为表的名字,operate_user为表中字段的名称--修改表字段结构altertablepubl......
  • [react基础] 表单 受控组件 非受控组件 单选 多选 全选 下拉菜单 高阶函数与函数的柯
    文章目录​​表单处理​​​​1、受控组件​​​​受控组件实现登录输入框​​​​受控组件操作封装​​​​受控组件聚合封装​​​​受控组件之单个复选框.单选​​​​......
  • [react] 路由
    文章目录​​1.相关理解​​​​1.1.SPA的理解​​​​1.2.路由的理解​​​​1.2.1什么是路由?​​​​1.2.2路由分类​​​​2.react-router-dom相关API​​​​2.1......
  • JVM调优思路
    思路相关文章:​​JVM常用调优参数​​总结JVM调优不是一蹴而就:Step1.根据各种命令或监控软件,去收集现象Step2.根据现象去推理原因Step3.根据原因去修改JVM参数然后再重启......
  • [react] 表单 受控组件 非受控组件
    文章目录​​收集表单数据​​​​1理解​​​​2应用​​​​3非受控组件​​​​4受控组件​​收集表单数据1理解包含表单的组件分类受控组件非受控组件2应用需求:......
  • python 导出oracle表结构到word文档
    安装oracleclienthttps://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html解压后把这几个文件放到python的site-package里面安......
  • [深度学习] Contractive Autoencoder
    ​ 转载于DeepLearning:ContractiveAutoencoder-dupuleng-博客园一、雅克比矩阵雅克比矩阵是一阶偏导,假设(x1,x2,....,xn)到(y1,y2,...,ym)的映射,相当于m个n元函......