当前位置: 首页 > news >正文

做手机网站版面做多宽网站建设基本流程流程图

做手机网站版面做多宽,网站建设基本流程流程图,微信二次开发,网络规划设计师下午题2023估分个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 优先级队列(2)_数据流中第k大元素 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目…

个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创

优先级队列(2)_数据流中第k大元素

收录于专栏【经典算法练习】
本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌
  

目录

1. 题目链接

2. 题目描述

3. 解法

算法思路:

代码展示: 


1. 题目链接

OJ链接 :  数据流中第k大元素icon-default.png?t=O83Ahttps://leetcode.cn/problems/kth-largest-element-in-a-stream/description/

2. 题目描述

设计一个找到数据流中第 k 大元素的类(class)。注意是排序后的第 k 大元素,不是第 k 个不同的元素。

请实现 KthLargest 类:

  • KthLargest(int k, int[] nums) 使用整数 k 和整数流 nums 初始化对象。
  • int add(int val) 将 val 插入数据流 nums 后,返回当前数据流中第 k 大的元素。

示例 1:

输入:
["KthLargest", "add", "add", "add", "add", "add"]
[[3, [4, 5, 8, 2]], [3], [5], [10], [9], [4]]

输出:[null, 4, 5, 5, 8, 8]

解释:

KthLargest kthLargest = new KthLargest(3, [4, 5, 8, 2]);
kthLargest.add(3); // 返回 4
kthLargest.add(5); // 返回 5
kthLargest.add(10); // 返回 5
kthLargest.add(9); // 返回 8
kthLargest.add(4); // 返回 8

示例 2:

输入:
["KthLargest", "add", "add", "add", "add"]
[[4, [7, 7, 7, 7, 8, 3]], [2], [10], [9], [9]]

输出:[null, 7, 7, 7, 8]

解释:

KthLargest kthLargest = new KthLargest(4, [7, 7, 7, 7, 8, 3]);
kthLargest.add(2); // 返回 7
kthLargest.add(10); // 返回 7
kthLargest.add(9); // 返回 7
kthLargest.add(9); // 返回 8

提示:

  • 0 <= nums.length <= 104
  • 1 <= k <= nums.length + 1
  • -104 <= nums[i] <= 104
  • -104 <= val <= 104
  • 最多调用 add 方法 104 次

3. 解法

算法思路:

这道题是经典的top-k问题, 使用堆来解决:
1. 创建一个大小为k的堆 (大根堆 or 小根堆)

2, 循环:
        a. 依次jindui

        b. 判断堆的大小是否超过k

使用大根堆还是小根堆?

这里很明显需要使用小根堆, 因为我们需要取第k大的元素, 在小根堆中就是堆顶元素

代码展示: 

class KthLargest {priority_queue<int, vector<int>, greater<int>> heap;int _k;
public:KthLargest(int k, vector<int>& nums) {_k = k;for(auto num : nums){heap.push(num);if(heap.size() > _k) heap.pop();}    }int add(int val) {heap.push(val);if(heap.size() > _k) heap.pop();return heap.top();    }
};/*** Your KthLargest object will be instantiated and called as such:* KthLargest* obj = new KthLargest(k, nums);* int param_1 = obj->add(val);*/

 知识补充:

我们建的堆默认是大顶堆

greater<int>: 这是 C++ 标准库中的一个函数对象(或称为仿函数),它会对两个元素进行比较。如果第一个元素小于第二个元素,它返回 true;否则返回 false。换句话说,它表示一种“升序”的排序。

http://www.yayakq.cn/news/824322/

相关文章:

  • 网站优化 秦皇岛河源建设局网站
  • 搜索引擎在哪里获取网站登录页面html模板
  • 深圳做三网合一网站中文域名的网站有哪些
  • 千山科技做网站好不好微信公众号平台官网登陆
  • 外贸常用网站有哪些wordpress分类目录下文章过多_添加文章目录导航
  • 比较有特色的网站下载网页图片
  • 知名品牌网站有哪些本地网站建设教程
  • 做五金行业的外贸网站pc 手机网站 微站
  • 如何使用爱站网wordpress 视频 全屏
  • 如何设计网站栏目广告在线设计制作
  • 网站开发需要解决的问题深圳网站公司招聘信息
  • 网站怎么做动态图片手机在线视频
  • 哪些网站是单页面网络推广教程
  • 做网站必要吗wordpress 给标签加id
  • 网站伪静态好还是静态好社区团购小程序怎么做
  • seo建站优化推广王老吉网络营销案例分析
  • 大理州住房和城乡建设局官方网站手机app开发工资高吗
  • 为了推出企业网站建设传奇网站模板使用
  • 扶贫网站建设网站图片自动切换怎么做
  • 商业网站建设的意义东莞免费做网站
  • 网站建设文化代理商五月色做受网站
  • 网站配置到iis后读不了数据应用商店软件
  • 好多网站权重都没了牧童蝉网站建设
  • 长沙圭塘网站建设公司广州网站建设设计公司
  • 淄博建设银行网站wordpress恶意 文章
  • 网站制作思路网站怎样做超链接
  • html做网站例子收录网站制作
  • 西安国际网站设计美瞳网站建设
  • 货源网站开发软件开发项目经验
  • 有哪些做应援的网站推广手段有哪些方式