栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

栈与队列(下)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

栈与队列(下)

1.滑动窗口最大值 leetcode 239

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        int[] res = new int[nums.length-k+1];
        Deque myDeque = new LinkedList<>();
        int id = 0;
        for(int i=0;i=k-1){
                res[id++] = nums[myDeque.peek()];
            }
        }

        return res;
    }
}

使用双端队列实现单调队列。遍历开始,每一次遍历都需要入队当前元素,当当前元素大于队尾元素时,队尾元素出队,且要注意k的范围,队列中始终只能维持最多k个元素,多了就要出队,为了判定窗口范围,这里压入队列的元素为index。

2.前k个高频元素


java中的优先队列

class Solution {
//主流做法
    public int[] topKFrequent(int[] nums, int k) {
    //统计各元素出现次数
        HashMap hm = new HashMap<>();
        for(int i=0;i> Que = new PriorityQueue<>((o1,o2)->o1.getValue()-o2.getValue());
        Set> entries = hm.entrySet();
        for(Map.Entry entry:entries){
            Que.offer(entry);
            if(Que.size()>k){
                Que.poll();
            }
        }
        int[] res = new int[k];
        for(int i=k-1;i>=0;i--){
            res[i] = Que.poll().getKey();
        }
        return res;
    }
}

非主流做法,leetcode中官方解下,热评第一

// 借助 HashMap 数据结构
    public int[] topKFrequent(int[] nums, int k) {
        int[] res = new int[k];    // 结果数组
        Map map = new HashMap();
        // 统计数组中各元素出现的次数
        for(int num : nums){
            if(map.containsKey(num)){
                map.put(num, map.get(num) + 1);
            }else{
                map.put(num, 1);
            }
        }

        int maxTimes = 0;    // 出现最多的元素的出现次数
        // 找出出现次数最多的元素出现的次数
        for(Map.Entry entry : map.entrySet()){
            if(entry.getValue() > maxTimes){
                maxTimes = entry.getValue();
            }
        }

        // 按出现次数从大到小添加到结果数组
        while(k > 0){
            for(Map.Entry entry : map.entrySet()){
                if(entry.getValue() == maxTimes){
                    res[k - 1] = entry.getKey();
                    k--;
                }
            }
            maxTimes--;
        }

        return res;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号