首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >每日三题-数组中的第K个最大元素、滑动窗口最大值、前K个高频元素

每日三题-数组中的第K个最大元素、滑动窗口最大值、前K个高频元素

作者头像
才疏学浅的木子
发布于 2022-11-20 08:47:20
发布于 2022-11-20 08:47:20
77300
代码可运行
举报
文章被收录于专栏:CSDN文章CSDN文章
运行总次数:0
代码可运行

👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: 算法 🌈 算法类型Hot100题 🌈

每日三题

数组中的第K个最大元素

解法一

暴力 先排序再返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int findKthLargest(int[] nums, int k) {
        Arrays.sort(nums);
        return nums[nums.length-k];
    }
}

解法二

优先队列 维护一个长度为k的小根堆

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> p = new PriorityQueue<Integer>(k);
        for(int i = 0;i < nums.length;i++){
            if(p.size() == k){
                if(p.peek() < nums[i]){
                  p.poll();  
                  p.add(nums[i]);
                  
                }
                continue;      
            }else{
                p.add(nums[i]);
            }
            
        }
        return p.poll();
    }
}

滑动窗口最大值

解法一

滑动窗口 滑动窗口维护一个nums[i]值递减的序列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        int len = nums.length;
        if(k == 1 || len == 1 || len < k) return nums;
        LinkedList<Integer> list = new LinkedList<>();

        // 维护一个降序的双向队列 
        // 【1,3,-1】 = > [3,-1] =》[1,2]//下标
        for(int i = 0;i < k;i++){
            while(!list.isEmpty() && nums[i] > nums[list.peekLast()]){
                list.pollLast();
            }
            list.addLast(i);
        }
        int ans[] = new int[len-k+1];
        ans[0] = nums[list.peekFirst()];
        for(int i = k;i < len;i++){
            while(!list.isEmpty() && nums[i] > nums[list.peekLast()]){
                list.pollLast();
            }
            list.addLast(i);
            
            // 避免越界
            while(!list.isEmpty() && list.peekFirst() <= i-k){
                list.pollFirst();
            }
            ans[i-k+1] = nums[list.peekFirst()];
        }
        return ans;
    }
}

前K个高频元素

解法一

优先队列 先遍历获取频数数组再回去前k个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        HashMap<Integer,Integer> map = new HashMap<>();
        for(int i = 0;i < nums.length;i++){
            map.put(nums[i],map.getOrDefault(nums[i],0)+1);
        }
        PriorityQueue<Integer> p = new PriorityQueue<Integer>((num1,num2)->{
            return map.get(num1) - map.get(num2);
        });
        map.forEach((key,value)->{
            if(p.size() < k){
                p.add(key);
            }else{
                if(map.get(p.peek()) < map.get(key)){
                    p.poll();
                    p.add(key);
                }
            }
        });
        int ans [] = new int[k];
        int j = 0;
        while(!p.isEmpty()){
            ans[j++] = p.poll(); 
        }
        return ans;
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
来来来,手把手教你做大白!
这个东西也是经常被拿来玩的一个小东西,就是通过border-radius 去自己切一个图形。
疯狂的技术宅
2019/03/28
4360
CSS3实现冰墩墩自由
CSS3代码: body { background: rgba(72, 167, 255, 0.733); overflow: hidden; width: 100%; height: 100%; } .main { width: 100px; margin: 10% auto; perspective: 300px; position: absolute; top: 20%; left: 50%; transfor
用户5997198
2022/03/28
4110
CSS3实现冰墩墩自由
冰墩墩太火了,一墩难求?Bloger用css方式呈现一人一墩
近日来,围绕冬奥的热点层出不穷。观众们眼前不断闪过一个接一个既陌生又新鲜好玩的项目,话题更迭的速度比钢架雪车还快。自然也会衍生出诸多分歧:围绕谷爱凌的国籍、苏翊鸣的分数、短道速滑赛场上几乎每一次的摔倒和判罚……这是每一届体育大赛中,都少不了的争论甚至争吵,只有冰墩墩成为了例外。
李洋博客
2022/02/18
4470
冰墩墩太火了,一墩难求?Bloger用css方式呈现一人一墩
CSS+HTML绘制2022年北京冬奥会吉祥物冰墩墩
既然买不到冰墩墩,就自己做个专属冰墩墩吧!以上代码都是本人原创,转载的话请注明出处
用户9999906
2022/09/26
3220
【Html.js——CSS布局】618 活动(蓝桥杯真题-2325)【合集】
Rossy Yan
2025/02/02
810
【Html.js——CSS布局】618 活动(蓝桥杯真题-2325)【合集】
【Html.js——页面布局】个人博客(蓝桥杯真题-1766)【合集】
通过以上步骤,HTML 和 CSS 代码协同工作,实现了一个具有导航栏、首页 banner、文章列表和右侧栏的个人博客页面布局。
Rossy Yan
2025/01/24
1470
【Html.js——页面布局】个人博客(蓝桥杯真题-1766)【合集】
【Html.js——Bug修复】找回连接的奇幻之旅(蓝桥杯真题-18555)【合集】
请在 js/index.js 文件中补充 resetableOnce 函数,实现在接收相同的函数时只执行一次。
Rossy Yan
2025/02/26
1090
【Html.js——Bug修复】找回连接的奇幻之旅(蓝桥杯真题-18555)【合集】
【Html.js——页面布局】水果摆盘(蓝桥杯真题-1767)【合集】
在需要修改部分的代码有相关提示,请仔细阅读之后,使用 flex 布局中的 align-self 和 order 完善 index.css 中的代码, 把对应的水果放在对应的盘子里面,最终效果如下:
Rossy Yan
2025/01/24
2450
【Html.js——页面布局】水果摆盘(蓝桥杯真题-1767)【合集】
HTML+CSS+JS 实现登录注册界面[通俗易懂]
鉴于小伙伴们没有csdn积分,我把代码压缩成了一个压缩包,放在了gitee上面,需要的请点击下载 点击下载
全栈程序员站长
2022/09/13
26.3K0
HTML+CSS+JS 实现登录注册界面[通俗易懂]
CSS3 Loading加载效果合集
效果1 CSS <style> .loading { width: 300px; height: 300px; position: relative; border: 1px solid gray; } .loading .line { width: 200px; height: 8px; /* margin: 50% 20px; */ position:
无道
2019/11/13
1.3K0
CSS3 Loading加载效果合集
CSS3实现雪容融自由
前几天写了一篇CSS3实现冰墩墩自由的技术文章,很多人问有没有雪容融的,今天就来啦!
用户5997198
2022/03/28
2690
CSS3实现雪容融自由
【Html.js——功能实现】布局切换(蓝桥杯真题-18556)【合集】
Rossy Yan
2025/02/21
2660
【Html.js——功能实现】布局切换(蓝桥杯真题-18556)【合集】
【CSS——功能实现】用户名片(蓝桥杯真题-2321)【合集】
选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。
Rossy Yan
2025/02/02
1590
【CSS——功能实现】用户名片(蓝桥杯真题-2321)【合集】
700行无用 纯 CSS 祝考生 金榜高粽《1_bit 的无用 CSS 代码 》
今天才想起来这回事,没办法就急急忙忙的赶工一下,接下来我就画一下这个海报试试手了:
1_bit
2022/06/06
6440
700行无用 纯 CSS 祝考生 金榜高粽《1_bit 的无用 CSS 代码 》
【Html.js——标签导航栏】卡片化标签页(蓝桥杯真题-1765)【合集】
选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果,当前显示仅有静态布局,并未实现选项卡切换功能。
Rossy Yan
2025/01/24
3210
【Html.js——标签导航栏】卡片化标签页(蓝桥杯真题-1765)【合集】
【Html.js——功能实现】蓝桥校园一卡通(蓝桥杯真题-2421)【合集】
HTML 部分主要负责构建页面的结构,创建了一个校园一卡通制卡的表单界面,包含了卡片展示区域和用户输入信息的表单区域。
Rossy Yan
2025/02/10
1930
【Html.js——功能实现】蓝桥校园一卡通(蓝桥杯真题-2421)【合集】
【CSS3——页面布局】画一只考拉(蓝桥杯真题-2341)【合集】
这段 HTML 代码构建了页面的基本结构,为绘制考拉提供了元素容器。主要通过嵌套的 <div> 元素来划分不同的部分,每个部分都有对应的类名,方便在 CSS 中进行样式设置。
Rossy Yan
2025/02/06
1850
【CSS3——页面布局】画一只考拉(蓝桥杯真题-2341)【合集】
归档 | 原生JS实现会动代码之哆啦A梦
TL;DR 项目官网:https://doraemon.jirengu.maylove.pub 源码地址:https://github.com/zkeq/Doraemon 实现原理 textDom.innerHTML = cssString.substring(0, textStartIndex); styleDom.innerHTML = cssString.substring(0, textStartIndex); 没啥好说的 完整 js 放一下 const cssString
Zkeq
2022/09/07
6680
HTML简单音乐播放器「建议收藏」
通过JS部分的代码,动态给歌曲信息模块(id为player-content1)的DOM元素添加/移除active类名。 设置CSS3动画过渡属性: transition:top 0.3s ease;来生成过渡时间0.3s,速度逐渐变慢的: 上移动画效果:top:0px; ——>top:-85px; 下移动画效果: top:-85px; ——>top:0px;
全栈程序员站长
2022/09/07
4.6K0
乐高个性化小人生成器(源代码一键复制即可运行 )
大家好,今天我要给大家介绍一个超级有趣的网页项目——乐高个性化小人生成器!这个项目可以让你随心所欲地定制属于自己的乐高小人,让它们拥有独一无二的表情和配色。
前端达人
2024/11/25
1260
乐高个性化小人生成器(源代码一键复制即可运行 )
推荐阅读
相关推荐
来来来,手把手教你做大白!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验