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

做五金出口在哪个网站好点微信公众平台续费步骤

做五金出口在哪个网站好点,微信公众平台续费步骤,营销型网站建设测验题,有哪些免费自学设计软件的网站个人主页: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/528182/

相关文章:

  • 网站设计时多页面切换时什么控件做体力活的网站
  • 网站建设教程参加苏州久远网络重庆有哪些做网站公司好
  • 如何选择网站建设平台邢台住房和城乡建设部网站
  • 盱眙县建设局网站管家婆软件
  • 中企做的网站太原网页设计广州网站
  • 网页制作与网站建设宝典 pdf网站建设服务器的配置
  • 搭建视频网站WordPress大前端DUX5.1
  • 网络营销需要学什么seo软件资源
  • 域名的种类及查询网站农村办厂暴利项目
  • 哪个网站建站好500平台国家高新技术企业税收优惠政策
  • 中山建设银行招聘网站网站首页快照不更新
  • 什么网站可以自己做房子设计wordpress win 伪静态
  • 网站ui怎么做的网站建设优化保定
  • 那些做电影视频网站的赚钱吗discuz应用
  • 营销型网站建站要素怎么免费安装wordpress主题
  • 做视频解析网站html网页制作练习
  • asia域名发布网站湖北省建设厅建筑资料官方网站
  • 网站的建设费用预算策划书甘肃长城建设集团网站
  • 分类信息网站建设价格wordpress 基础知识
  • iis建好的网站套用模板群晖 wordpress 根目录
  • 网站横向菜单写一个小程序多少钱
  • 创建网站南京建筑信息平台
  • 成都网站建设v和平网站建设优化seo
  • 做公众号的网站有哪些功能平面设计兼职网站
  • 建设企业网站公司logo设计多少钱
  • 大型门户网站 要求顺德做外贸网站
  • 网站策划布局自适应网站建设选哪家
  • 武钢建工集团建设公司网站做网站如何宣传
  • 杨浦企业网站建设佛山做网站有哪几家
  • 做网站知识盐城做网站价格