当前位置: 首页 > 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.yidumall.com/news/60898.html

相关文章:

  • 视频网站怎么做防盗链免费发布推广信息的b2b
  • html5优秀企业网站南京怎样优化关键词排名
  • jsp servlet做博客网站北京网络seo
  • 成都网站建设公司汇总燃灯seo
  • 深圳品牌营销型网站建设大亚湾发布
  • 网站描述是什么免费二级域名注册申请
  • 网站建设装修陕西网页设计
  • 竞彩网站建设2021近期时事新闻热点事件
  • 企业微信网站建设方案百度地图优化排名方法
  • 邢台网站建设服务域名申请的流程
  • 泉州最专业手机网站建设定制郑州百度公司地址
  • 视觉传达设计就业前景深圳网站seo推广
  • 高端网站建设大概多少费用广州百度关键词搜索
  • 自己网站上做淘宝搜索南昌seo专业团队
  • 做图片的网站有哪些百度打广告怎么收费
  • 网站被抄袭怎么投诉免费的黄冈网站有哪些
  • https下直接安装wordpress优化大师软件大全
  • 简要描述网站建设的基本步骤浏览器谷歌手机版下载
  • 简单个人网站制作流程关键词优化排名软件推荐
  • 家电网站建设需求分析广告资源对接平台
  • 营销型网站典型临沂seo推广外包
  • html写的网页怎么在手机上看seo搜索引擎推广
  • 陕西网站制作公司排名关键词优化一般收费价格
  • 邯郸企业网站建设价格流量平台有哪些
  • 网络网站建设网络推广渠道排名
  • 如何让公司网站南宁seo排名首页
  • 5118网站免费网址注册
  • 室内设计公司免费网站品牌搜索引擎服务优化
  • 青岛开发区网站建设百度人工智能开放平台
  • 淘宝客手机网站搭建做网站哪家好