代码随想录算法训练营第13天

news2024/11/18 23:35:11

239. 滑动窗口最大值 (一刷至少需要理解思路)

方法:暴力法 (时间超出限制)

注意:

代码:

class Solution {
public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        vector<int>res;
        int size = nums.size();
        for(int i=0; i<=size-k; i++){
            int maxval = INT_MIN;
            for(int j =i;  j<nums.size()&&j<i+k;j++){
               maxval = max(nums[j], maxval);  
            }
            res.push_back(maxval);
        }
        return res;
    }
};

在这里插入图片描述

方法:自定义队列,实现出口元素的值就是最大值。

	自己定义一个队列que,里面实现 pop, push, front
	pop实现的原则:所要移除的val值  单调队列  出口元素,则队列弹出val元素。
	push实现的原则:如果push的val值  大于 入口元素的值, 则将 入口元素的值弹出, 直到push元素的值 小于队列入口的元素。
	front 实现的原则: 直接返回 出口元素的值。

注意:

代码:

class Solution {
class myqueue{
public:
    deque<int>que;
    void pop(int val){
        if(!que.empty() && val == que.front()){
            que.pop_front();
        }
    }
    void push(int val){
        while( !que.empty() && val>que.back()){
            que.pop_back();
        }
        que.push_back(val);
    }
    int front(){
        return que.front();
    }
};

public:
    vector<int> maxSlidingWindow(vector<int>& nums, int k) {
        vector<int>res;
        myqueue que;
        for(int i=0; i<k; i++){
            que.push(nums[i]);
        }
        res.push_back(que.front());
        for(int i=k; i<nums.size(); i++){
            que.pop(nums[i-k]);
            que.push(nums[i]);
            res.push_back(que.front());
        }
        return res;
    }
};

在这里插入图片描述

347.前 K 个高频元素 (一刷至少需要理解思路)

小顶堆:

priority_queue<int, vector<int>, greater<int> > p;
//greater指升序,小的在前面,所以是小顶堆;less降序,大的在前面,所以是大顶堆

方法:小顶堆

	小顶堆中插入数据, 小顶堆会将数据由小到大排列,
	设置一个map<nums[i], 出现的次数>
	遍历整个map,将所有的map插入到小顶堆中,
	小顶堆中的前nums.size()-k个是出现次数最小的元素,将其弹出,剩下的是k个高频元素。

注意:

代码:

class Solution {
public:
    class mycompair{
        public:
        bool operator()(const pair<int, int>& lhs, const pair<int, int>&rhs){
            return lhs.second >rhs.second;
        }
    };

    vector<int> topKFrequent(vector<int>& nums, int k) {
        map<int, int>m;
        for(int i =0; i<nums.size(); i++){
            m[nums[i]]++;
        }

        priority_queue<pair<int, int>, vector<pair<int, int>>, mycompair>pri_que;
        for(map<int, int>::iterator it = m.begin(); it!=m.end(); it++){
            pri_que.push(*it);
            if(pri_que.size() > k){
                pri_que.pop();
            }
        }

        vector<int>res;
        for(int i=0; i<k; i++){
            res.push_back(pri_que.top().first);
            pri_que.pop();
        }
        reverse(res.begin(), res.end());
        return res;
    }
};

在这里插入图片描述

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

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

相关文章

python蚂蚁觅食 2023年12月青少年编程电子学会python编程等级考试二级真题解析

目录 python蚂蚁觅食 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python蚂蚁觅食 2023年12月 python编程等级考试级编程题 一、题目要求 …

数据容器化,显著增强数据安全性

数据容器化涉及同一端点设备中的应用程序&#xff0c;这些应用程序充当唯一且隔离的数据“容器”。在数据丢失防护方面&#xff0c;可以通过将组织内经常用于处理关键数据的受信任应用程序标记为企业友好&#xff0c;将其委派为敏感信息的数据容器。然后&#xff0c;与其保护整…

科研工具分享-SCI写作课

教程地址【传送门】 所为搭建自己本地的chatGpt&#xff0c;其一就是方便&#xff0c;其二就是没有Ip休眠&#xff0c;这里解释一下&#xff0c;所为ip休眠&#xff0c;就是你长时间不用&#xff0c;就跟电脑自动休眠一样&#xff0c;你需要重新刷新一次网页 他才跟你继续聊天…

【2024泰迪杯】A 题:生产线的故障自动识别与人员配置 Python代码实现

【2024泰迪杯】A 题&#xff1a;生产线的故障自动识别与人员配置 Python代码实现 1 问题 一、问题背景 随着新兴信息技术的大规模应用&#xff0c;工业生产线的智能化控制技术日益成熟。自动生产线 可以自动完成物品传送、物料填装、产品包装和质量检测等过程&#xff0c;极…

js实现导出/下载excel文件

js实现导出/下载excel文件 // response 为导出接口返回数据&#xff0c;如上图 const exportExcel (response, fileName:string) >{const blob new Blob([response.data], {type: response.headers[content-type] //使用获取的excel格式});const downloadElement documen…

常见排序算法(C/C++)--- 动画演示

本篇将介绍一些常见的排序算法&#xff0c;如插入排序&#xff1a;直接插入排序、希尔排序&#xff1b;选择排序&#xff1a;选择排序、堆排序&#xff1b;交换排序&#xff1a;快速排序、冒泡排序&#xff1b;以及最后的归并排序。 对于以上的排序算法&#xff0c;我们总结了每…

Spring基础——SpringMVC概述

目录 MCV模式Spring MVCSrping MVC核心组件SpringMVC的Context域 参考资料 MCV模式 MVC模式是Java软件开发中非常常见的一种软件架构模式&#xff0c;该模式把项目开发分成三个基本组成部分&#xff0c;分别是Model&#xff08;模型&#xff09;&#xff0c;View&#xff08;视…

电源模块测试项目解析:浪涌测试方法、测试标准、测试要求

浪涌测试是电源模块安全性测试方法之一&#xff0c;是对电源模块进行瞬态电压和电流测试的过程。通过模拟实际运行中可能遇到的电压和电流浪涌情况&#xff0c;来检测电源模块的耐受能力。 电源模块浪涌测试标准 1. IEC 61000-4-11&#xff1a;用来评估电源模块在电压变动时的抗…

微信小程序云开发教程——墨刀原型工具入门(素材面板)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

追寻工作与生活的和谐之道

在现代社会&#xff0c;人们往往被快节奏的工作和生活所困扰&#xff0c;如何在这两者之间找到平衡点&#xff0c;成为许多人关注的焦点。本文将为您介绍一些实用的方法和建议&#xff0c;帮助您实现工作与生活的和谐共处。 一、合理规划时间&#xff0c;提高工作效率 时间是实…

【Flutter 面试题】如何理解Flutter中的Widget、State、Context ,他们是为了解决什么问题?

【Flutter 面试题】如何理解Flutter中的Widget、State、Context &#xff0c;他们是为了解决什么问题&#xff1f; 文章目录 写在前面解答补充说明完整代码示例运行结果如下详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff…

集合框架(二)Map系列集合

概述 常用方法 遍历方式 Map集合的遍历方式 键找值&#xff1a;先获取Map集合全部的键&#xff0c;再通过遍历键来找值键值对&#xff1a;把“键值对“看成一个整体进行遍历(难度较大)Lambda&#xff1a;JDK1.8开始之后的新技术(非常的简单) 1.键找值 2.键值对 键值对是如何实…

第100+1步 ChatGPT文献复现:ARIMAX预测肺结核 vol. 1

基于WIN10的64位系统演示 一、写在前面 各位大佬&#xff0c;好久不见。 《100步入门机器学习》肝完了&#xff0c;不懂大家学了多少了&#xff0c;默认你们都学完了吧。 今年我们换一个玩法&#xff08;灌水&#xff09;&#xff1a;一系列更接近实战的教程&#xff0c;复…

js导出的excel文件无法打开/打开乱码,excel无法打开xxx.xlsx因为文件格式或文件扩展无效

excel无法打开xxx.xlsx因为文件格式或文件扩展无效 使用 a 标签导出这里就不细说了&#xff0c;直接说上述问题解决方案 在调用导出接口的时候加上两个参数 responseType: “blob” responseEncoding: “utf8” export function test(data) {return util({url: /test,method: …

javaScript | 练习:给出一个存储学生信息的对象数组,实现对每个对象的遍历,先输出每个对象的属性名,再输出对应的属性值

考察的知识点包括&#xff1a; JavaScript 数组的遍历。JavaScript 对象的遍历&#xff0c;特别是使用 for...in 循环。如何使用方括号[]和点号 . 访问对象的属性和方法。控制台输出&#xff08;console.log&#xff09;的使用。 控制台输出结果如下&#xff1a; 参考代码如下…

C++17中auto作为非类型模板参数

非类型模板参数是具有固定类型的模板参数&#xff0c;用作作为模板参数传入的constexpr值的占位符。非类型模板参数可以是以下类型&#xff1a; (1).整型&#xff1b; (2).枚举类型&#xff1b; (3).std::nullptr_t&#xff1b; (4).指向对象的指针或引…

jpg图片格式转换怎么做?教你一种图片格式转换方法

Jpg格式图片怎么快速转换&#xff1f;常见的图片格式有jpg、png等格式&#xff0c;当我们想要将常用的jpg格式图片转换成其他格式的时候&#xff0c;要怎么办呢&#xff1f;很简单通过使用图片转换器&#xff08;https://www.yasuotu.com/geshi&#xff09;&#xff0c;无需下载…

简单接入电商API接口|轻松实现实时采集淘宝、抖音、快手、1688商品,挖掘潜力款

今天给大家带来一款非常实用的电商API接口&#xff0c;这款数据采集接口支持淘宝采集、抖音采集、快手采集、1688采集以及潜力款分析&#xff0c;功能强大&#xff0c;助您在电商领域更上一层楼。 首先&#xff0c;我们来了解一下淘宝采集功能。作为国内最大的电商平台&#xf…

系统分析师论文总结【持续更新】

2024年3月4日&#xff0c;新的软考规则出来&#xff0c;高项改为一年一次&#xff0c;架构师改为一年两次。 下半年考试安排&#xff0c;如下图&#xff08;来源官网&#xff09; 收集整理系统分析师论文&#xff0c;方便备查。 一、2010年论文 1、论软件维护及软件课维护性…

C++ 哈希

目录 1. 哈希概念 2. 哈希冲突 3. 哈希函数 4. 哈希冲突解决 4.1 闭散列 4.2 开散列 4.3 对于哈希表的补充 5. 开散列与闭散列比较 6. 哈希表的模拟实现以及unorder_set和unorder_map的封装 1. 哈希概念 顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间…