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

吉安网站设计网站seo规划

吉安网站设计,网站seo规划,高德地图能否上传vr全景图片,photoshop做图网站个人主页: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/66018.html

相关文章:

  • 淘宝上开做网站的店铺b站推广费用一般多少
  • 网站首页推荐公司的公关
  • phpcms做的网站有哪些百度投诉电话客服24小时
  • 网站开发与设计多少钱一个网站qq群怎么优化排名靠前
  • 传奇怎么建设自己的网站成都百度推广账户优化
  • 网站干什么的抖音搜索引擎推广
  • 重庆企业站seo陕西今日头条新闻
  • .jsp网站开发技术口碑营销方案怎么写
  • 做域名后就得做网站吗线上营销方式
  • 怎样做美瞳代购网站aso优化教程
  • 网站备案行业seo型网站
  • 品牌型网站建设理论百度搜索量查询
  • wordpress建站案例营销推广方案
  • 网站logo怎么做才清晰网络广告营销策划方案
  • 网页布局结构图邯郸seo优化
  • 政府网站源码下载设计网络推广方案
  • wordpress 文艺小清新网站seo招聘
  • 百度做鸡网站市场推广怎么做
  • 网站制作选哪家公司品牌策略
  • ubuntu做php网站网站推广的常用方法有哪些?
  • ssm网站开发视频百度手机应用商店
  • wordpress 四亩东莞关键词排名seo
  • 西安网站托管企业内训
  • 做阿里巴巴网站有什么用推广引流软件
  • 做网站的哪里好东莞seo优化公司
  • 专题网站建设总要求湖南广告优化
  • wordpress+悬浮+登录惠州seo外包平台
  • 中英文 微信网站 怎么做济南seo外包公司
  • 无锡网站建设如何制作网页链接教程
  • 北京工程信息网官网济南百度seo