剑指offer刷题笔记--Num41-50

news2024/11/18 18:29:02

1--数据流中的中位数(41)

 主要思路:

      维护两个优先队列,Q1大数优先,存储比中位数小的数;Q2小数优先,存储比中位数大的数;

       当存储的数为偶数时,Q1.size() == Q2.size(), 中位数为:(Q1.top() + Q2.top()) / 2.0

       当存储的数为奇数时,Q2.size() = Q1.size() + 1, 中位数为 Q2 的队头元素

       因此插入元素,要确保Q2.size() >= Q1.size();

       同时插入新元素时,要先插入到另一个队列中,确保有序,取队头元素再插入到目的元素中;

#include <iostream>
#include <queue>   
#include <algorithm>

class MedianFinder {
public:
    MedianFinder() {}
    
    void addNum(int num) {
        // Q1大数优先,存储比中位数小的数
        // Q2小数优先,存储比中位数大的数
        // 当存储的数为偶数时,Q1.size() == Q2.size(), 中位数为:(Q1.top() + Q2.top()) / 2.0
        // 当存储的数为奇数时,Q2.size() = Q1.size() + 1, 中位数为 Q2 的队头元素
        // 因此插入元素,要确保Q2.size() >= Q1.size(); 
        // 同时插入新元素时,要先插入到另一个队列中,确保有序,取队头元素再插入到目的元素中
        if(Q1.size() == Q2.size()){
            Q1.push(num);
            int top = Q1.top();
            Q1.pop();
            Q2.push(top);
        }
        else{
            Q2.push(num);
            int top = Q2.top();
            Q2.pop();
            Q1.push(top);
        }
    }
    
    double findMedian() {
        if(Q1.size() == Q2.size()){
            return (Q1.top() + Q2.top()) / 2.0;
        }
        else{
            return Q2.top()*1.0;
        }
        
    }
private:
    std::priority_queue<int, std::vector<int>, std::less<int>> Q1; // 大数优先级高,队头
    std::priority_queue<int, std::vector<int>, std::greater<int>> Q2; // 小数优先级高,队头
};


int main(int argc, char *argv[]){
    MedianFinder S1;
    S1.addNum(1);
    S1.addNum(4);
    S1.addNum(2);
    S1.addNum(3);
    double Res = S1.findMedian();
    std::cout << Res << std::endl;
    return 0;
}

2--连续子数组的最大和

主要思路:

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/736849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文献阅读笔记 # SimCSE: Simple Contrastive Learning of Sentence Embeddings

《SimCSE: Simple Contrastive Learning of Sentence Embeddings》EMNLP 2021 (CCF-B) Tianyu Gao†∗ Xingcheng Yao‡∗ Danqi Chen†作者来自普林斯顿计算机系和清华大学交叉信息研究院Code & Pre-trained Models 【研究对象】&#xff1a;Sentence Embedding&#xff…

ubuntu RPM should not be used directly install RPM packages, use Alien instead!

ubuntu RPM should not be used directly install RPM packages, use Alien instead! 所以我们最好下载deb版本的安装包 安装 参考文章

科技资讯|三星智能戒指资料曝光,智能穿戴发展新机遇

根据 Reddit 社区网友反馈&#xff0c;在 Beta 版三星 Health 应用中&#xff0c;发现了全新的“Ring Support”选项&#xff0c;暗示三星未来将会推出智能戒指产品。 三星内部正在开发健康追踪设备 Galaxy Ring&#xff0c;这款智能戒指配备 PPG&#xff08;光电容积脉搏波&…

【视觉SLAM入门】3. 相机模型,内外参,畸变推导

"瑾瑜匿瑕" 1. 相机模型和内参1.1 内参推导1.2 外参推导 2. 畸变2.1 径向畸变2.2 切向畸变 3. 深度信息3.1 算法测距3.2 物理测距 本节讨论围绕这个问题展开 机器人如何观测外部世界&#xff1f; \quad\large\textcolor{red}{机器人如何观测外部世界&#xff1f;} 机…

音频转文字怎么操作?这几个好用的音频转文字方法分享给你

想象一下&#xff0c;你在公交车上听到了一个超搞笑的笑话&#xff0c;想要记下来和朋友分享&#xff0c;但是又怕自己记漏或者记错了关键的部分。这时候&#xff0c;音频转文字的软件就能帮上大忙了&#xff01;你只需将录音导入到软件中&#xff0c;它就会像一位超级厉害的听…

4. Springboot快速回顾(@Mapper和@MapperScan)

springboot最重要的注解之一&#xff0c;因为有了Mapper注解&#xff0c;省去了在xml文件繁琐的配置 本文将对比介绍有无注解的区别&#xff0c;加深认识 目录 1 初次使用Mapper1.1 创建实体类Stu1.2 创建dao层接口1.3 创建service层接口和实现1.5 创建StuMapper.xml文件1.4 创…

岛屿数量 (力扣) dfs + bfs JAVA

给你一个由 ‘1’&#xff08;陆地&#xff09;和 ‘0’&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网格的…

【Linux】进程间通信 -- 命名管道 | mkfifo调用

小实验1.我们首先创建两个文件2.我们使用创建命名管道的命令mkfifo3.开始执行 在语言层面使用命名管道实现通信1.创建命名管道-函数mkfifo2.写入端代码3.读取端代码小细节&#xff1a; 小实验 1.我们首先创建两个文件 client.cpp: #include <iostream> using namespac…

《向量数据库指南》——什么是比较 Embedding?

目录 比较 Embedding 准备工作 示例 0:Marlon Brando 示例 1:国王与王后 示例 2:Apple,水果还是公司 欢迎回到向量数据库 101 系列教程。 之前的教程中,我们介绍了非结构化数据、向量数据库和 Milvus——全球最受欢迎的开源向量数据库。我们还简单介绍了 Embedding …

windows提权总结

文章目录 windows基础知识提权总结基础知识提权思路metasplit 提权反弹shell提权windows系统配置错误提权系统服务权限配置错误不带引号的服务路径提权注册键 AlwaysInstallElevated 本地dll劫持提权第三方提权sqlserver提权mysql提权MOF提权G6FTP提权 绕过UAC bypassuac远程终…

前端|HTML

参考视频&#xff1a;黑马程序员前端Html5教程&#xff0c;前端必备基础 目录 &#x1f4da;web标准 &#x1f4da;HTML认识 &#x1f407;HTML的概念 &#x1f407;开发工具 &#x1f407;HTML标签基础 ⭐️HTML骨架标签 ⭐️HTML元素标签分类 ⭐️HTML标签关系&#…

一款可源码交付的Java可视化建模规则引擎

规则引擎是一种根据规则中包含的指定过滤条件&#xff0c;判断其能否匹配运行时刻的实时条件来执行规则中所规定的动作的引擎。 规则引擎由推理引擎发展而来&#xff0c;是一种嵌入在应用程序中的组件&#xff0c;实现了将业务决策从应用程序代码中分离出来&#xff0c;并使用预…

FPGA纯verilog实现10G UDP协议栈,XGMII接口UltraScale GTY驱动,提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、该UDP协议栈性能4、详细设计方案SFPSGMII收发接口模块AXIS FIFOUDP协议栈UltraScale FPGAs Transceivers Wizard GTY 5、vivado工程6、上板调试验证并演示准备工作查看ARPUDP数据回环测试 7、福利&#xff1a;工程代码的获取 1、前言 目…

SpringBoot原理分析 | 安全框架:Security

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架&#xff1b;提供一组可以在Spring应用上下文中配置的Be…

使用作用域函数简化您的 Kotlin 代码:释放对象的力量

使用作用域函数简化您的 Kotlin 代码&#xff1a;释放对象的力量 欢迎&#xff0c;亲爱的 Kotlin 爱好者&#xff01;厌倦了在处理对象时反复书写相同的代码吗&#xff1f;别担心&#xff01;Kotlin 的作用域函数来拯救你&#xff0c;为你的编码之旅增添优雅的色彩。在这篇有趣…

华为认证 | 7月底这门HCIA认证即将发布!

华为认证HCIA-Cloud Service V3.5&#xff08;中文版&#xff09;预计将于2023年7月31日正式对外发布。 为了帮助您做好学习、培训和考试计划&#xff0c;现进行预发布通知&#xff0c;请您关注。 01 发布概述 基于“平台生态”战略&#xff0c;围绕“云-管-端”协同的新ICT技…

小程序学习(三):小程序的宿主环境

1.什么是宿主环境 宿主环境指的是程序运行所必须的依赖环境。例如:Android系统和IOS系统是两个不同的宿主环境。安卓版的微信App是不能在IOS环境下运行的,所以Android是暗转软件的宿主环境,脱离宿主环境的软件是没有任何意义的! 2.小程序的宿主环境 小程序借助宿主环境提供的能…

(4)【轨迹优化篇】线性加权轨迹代价损失评分,轨迹多选一方法--DWA_planner、Open_Planner、lexicographic_planner

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言1、设计代价损失函数进行评分、线性加权法、迹评分轨迹多选一的轨迹优化设计思想&#xff08;1&#xff09;设计代价函数进行…

适用于企业级工作负载的混合闪存存储

NetApp FAS9500、FAS8700、FAS8300&#xff1a;适用于企业级工作负载的 FAS 拥有企业级应用程序和私有云的客户通常部署这些系统来作为架构基础。通过与主要超大规模云提供商的简单集成创建统一的混合云 借助 NetApp FAS 按需扩展性能 客户将这些平台描述为“重型”&#xff0…

2023年开源社执行委员会介绍

总起 开源社的各项工作主要分为内部事务、对外事务与专项工作三大类。整体而言&#xff0c;基础设施、财务、法律与成员发展等工作较为偏向于内部事务&#xff0c;而活动、媒体、社区合作、顾问委员会服务、国际接轨等工作偏向于对外联络与展现&#xff0c;而教育、公益、硬件、…