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

【每日刷题】Day100

【每日刷题】Day100

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 【模板】堆_牛客题霸_牛客网 (nowcoder.com)

2. 【模板】链表_牛客题霸_牛客网 (nowcoder.com)

3. 【模板】队列_牛客题霸_牛客网 (nowcoder.com)

1. 【模板】堆_牛客题霸_牛客网 (nowcoder.com)

//C++堆(大堆)的实现。

#include <iostream>

#include <vector>

using namespace std;

class Heap

{

public:

    Heap()

        :_size(0)

    {}

    void Swap(int& x,int& y)

    {

        int tmp = x;

        x = y;

        y = tmp;

    }


//向下调整

    void AdjustDown(int parents)

    {

        int child = parents*2+1;

        while(child<_size)

        {

            if(child+1<_size&&_arr[child+1]>_arr[child])

                child++;

            if(_arr[child]>_arr[parents])

                Swap(_arr[child],_arr[parents]);

            else

                break;

            parents = child;

            child = parents*2+1;

        }

    }

//向上调整

    void Adjustup(int child)

    {

        int parents = (child-1)/2;

        while(child>0)

        {

            if(_arr[child]>_arr[parents])

                Swap(_arr[child],_arr[parents]);

            else

                break;

            child = parents;

            parents = (child-1)/2;

        }

    }

//入堆

    void push(int val)

    {

        _arr.push_back(val);

        Adjustup(_size);

        _size++;

    }

//删除堆顶元素

    void pop()

    {

        if(_size==0)

            cout<<"empty"<<endl;

        else

        {

            cout<<_arr[0]<<endl;

            Swap(_arr[0],_arr[_size-1]);

            _arr.pop_back();

            _size--;

            AdjustDown(0);

        }

    }

//获取堆顶元素

    void top()

    {

        if(_size==0)

            cout<<"empty"<<endl;

        else

            cout<<_arr[0]<<endl;

    }


 

private:

    vector<int> _arr;

    size_t _size;

};

int main()

{

    Heap h;

    int n = 0;

    cin>>n;

    while(n--)

    {

        int data = 0;

        string s;

        cin>>s;

        if(s=="push")

        {

            cin>>data;

            h.push(data);

        }

        if(s=="top")

            h.top();

        if(s=="pop")

            h.pop();

    }

    return 0;

}

2. 【模板】链表_牛客题霸_牛客网 (nowcoder.com)

//C++链表模拟实现。

#include <iostream>

#include <list>

using namespace std;


 

class List

{

    class list_node

{

public:

    list_node(int y = -2147483648)

        :next(nullptr)

        ,val(y)

    {}

    int val;

    list_node* next;

};

public:

    List()

        :head(new list_node)

        ,_size(0)

    {}

//打印链表

    void printf()

    {

        if(_size)

        {

            list_node* pmove = head->next;

            while(pmove)

            {

                cout<<pmove->val<<' ';

                pmove = pmove->next;

            }

        }

        else

            cout<<"NULL";

    }

//在值为x的节点前插入值为y的节点

    void Insert(int x,int y)

    {

        list_node* pnext = head->next;

        list_node* prev = head;

        while(pnext&&pnext->val!=x)

        {

            prev = prev->next;

            pnext = pnext->next;

        }

        list_node* newnode = new list_node(y);

        prev->next = newnode;

        newnode->next = pnext;

        _size++;

    }

//删除值为x的节点

    void Delete(int x)

    {

        list_node* pmove = head->next;

        list_node* prev = head;

        while(pmove&&pmove->val!=x)

        {

            prev = prev->next;

            pmove = pmove->next;

        }

        if(pmove)

        {

            prev->next = pmove->next;

            _size--;

            delete pmove;

        }

    }

private:

    list_node* head;

    size_t _size;

};

int main()

{

    List l;

    int n = 0;

    cin>>n;

    while(n--)

    {

        int x,y;

        string s;

        cin>>s;

        if(s=="insert")

        {

            cin>>x>>y;

            l.Insert(x, y);

        }

        if(s=="delete")

        {

            cin>>x;

            l.Delete(x);

        }

    }

    l.printf();

    return 0;

}

3. 【模板】队列_牛客题霸_牛客网 (nowcoder.com)

//C++队列的实现。

#include <iostream>

#include <list>

#include <string>

using namespace std;

class Queue

{

    class queue_node

{

public:

    queue_node(int _val = -2147483648)

        :next(nullptr)

        ,val(_val)

    {}

    int val;

    queue_node* next;

};

public:

    Queue()

        :head(new queue_node)

        ,pmove(head)

        ,_size(0)

    {}

//获取队头元素

    void front()

    {

        if(_size)

            cout<<head->next->val<<endl;

        else

            cout<<"error"<<endl;

    }

//队尾插入元素

    void Push(int data)

    {

        queue_node* newnode = new queue_node(data);

        pmove->next = newnode;

        pmove = pmove->next;

        _size++;

    }

//队头删除元素

    void pop()

    {

        if(_size)

        {

            queue_node* pnext = head->next->next;

            queue_node* pcur = head->next;

            cout<<pcur->val<<endl;

            if(pcur==pmove)

                pmove = head;

            head->next = pnext;

            delete pcur;

            _size--;

        }

        else

            cout<<"error"<<endl;

    }

private:

    queue_node* head;

    queue_node* pmove;

    size_t _size;

};

int main()

{

    Queue q;

    int n;

    cin>>n;

    while(n--)

    {

        int data;

        string s;

        cin>>s;

        if(s=="push")

        {

            cin>>data;

            q.Push(data);

        }

        if(s=="pop")

            q.pop();

        if(s=="front")

            q.front();

    }

    return 0;

}

相关文章:

【每日刷题】Day100

【每日刷题】Day100 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 【模板】堆_牛客题霸_牛客网 (nowcoder.com) 2. 【模板】链表_牛客题霸_牛客网 (nowcoder.com) 3…...

网络协议九 应用层 HTTPS

一 什么是 HTTPS 二 什么是 SSL/TLS 协议 &#xff0c;TLS 是 SSL 升级后的名字 三. TLS 协议 工作在那一层 四 。OpenSSL 是 SSL/TLS协议的开源实现。 五。重点 HTTPS 的通讯过程 六 TLS 1.2 的连接过程 1. client hello 是浏览器发送给服务器的第一条信息&#xff0c; 是客户…...

【ArrayList】JDK1.8源码详细注释 以及如何实现线程安全的链表

ArrayList(JDK8) ArrayList有四个内部类&#xff0c;成员内部类Itr&#xff0c;成员内部类ListItr&#xff0c;静态内部类SubList&#xff0c;ArrayListSpliterator&#xff08;暂时用不到&#xff09;Itr是Iterator的实现类&#xff0c;支持正向遍历&#xff0c;ArrayList的i…...

[python]rasterio运行代码警告proj_create_from_database: Cannot find proj.db

这个报错要分原因还有rasterio版本讨论&#xff0c;因此官方给出了十分具体回答 Frequently Asked Questions What does "RasterioIOError: file.ecw not recognized as a supported file format." mean? This exception is raised when none of rasterios format …...

ThinkPHP5.1.C+CmsEasy-SQL注入

目录 1、ThinkPHP 中存在的 SQL注入 漏洞&#xff08; select 方法注入&#xff09; 1.1环境配置 1.1.1将 composer.json 文件的 require 字段设置成如下&#xff1a; 1.1.2设置application/index/controller/Index.php 文件 1.1.3在 application/database.php 文件中配置…...

Python 绘图进阶之词云图:文本数据的可视化艺术

Python 绘图进阶之词云图&#xff1a;文本数据的可视化艺术 引言 在数据科学和自然语言处理领域&#xff0c;词云图&#xff08;Word Cloud&#xff09;是一种常用的可视化工具。它通过直观的图形展示文本数据中的高频词汇&#xff0c;使得我们能够快速抓住文本内容的核心主题…...

【Windows】Q-Dir(资源管理器)软件介绍

软件介绍 Q-Dir是一款免费的文件管理器软件&#xff0c;它可以让您更方便地浏览和管理计算机上的文件和文件夹。与Windows自带的资源管理器相比&#xff0c;Q-Dir具有更多的功能和选项。 安装教程 软件下载完成&#xff0c;解压软件。 点击Q-Dir.exe即可打开软件。 功能…...

什么是令牌桶算法?工作原理是什么?使用它有哪些优点和注意事项?

大家好&#xff0c;我是鸭鸭&#xff01; 此答案节选自鸭鸭最近弄的面试刷题神器面试鸭 &#xff0c;更多大厂常问面试题&#xff0c;可以点击下面的小程序进行阅读哈&#xff01; 目前这个面试刷题小程序刚出&#xff0c;有网页和小程序双端可以使用&#xff01; 回归面试题…...

C++-类与对象(中上篇)

一、目标 1. 类的 6 个默认成员函数 2. 构造函数 3. 析构函数 二、对目标的介绍 1. 类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&#xff0c;编译器会自动生…...

链表 206.反转链表

一般方法 不需要一个个来回换&#xff0c;只需要改变链表的指向&#xff0c;即可完成 一个链表的头节点&#xff0c;也代表了整个链表 class Solution {public ListNode reverseList(ListNode head) {ListNode temp;ListNode cur head;ListNode pre null;while(cur ! null…...

Ubuntu18.04 配置EtherCAT主站IGH SOEM

IGH IGH 是开源的EtherCAT 主站软件 一、安装依赖 sudo apt update sudo apt install build-essential linux-headers-$(uname -r) mercurial autoconf libtool 也不知道安装的完全不完全 uname -r 可以查看内核&#xff0c;我安装的ubuntu18.04的内核版本是 5.4.0-84-gen…...

航空航天构型管理

构型管理(CM)被定义为在产品的生命周期中应用的SE技术和管理规程。CM的五个原则是&#xff1a;CM计划与执行、配置识别、配置变更和差异控制、配置状态核算和配置验证。 广义上的构型管理规划和管理是有效实施配置管理的关键。特别是在不同项目之间的差异中&#xff0c;构型管理…...

Visual Studio Code 安装与 C/C++ 语言运行总结

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; Visual Studio Code&#xff08;简称 VS Code&#xff09;是由微软开发的一款轻量级、强大的代码编辑器&#xff0c;支持多种编程语言和开发框架。由于其丰富的插件生态系统和灵活的配置选项&#xff0c;VS…...

Science Robotics 受鳞片启发的可编程机器人结构,可同时进行形状变形和刚度变化

一、前言速览 生物有机体通常凭借复杂的结构表现出显著的多功能性&#xff0c;例如章鱼具有可以同时改变形状和刚度的能力。现有的仿生软体机器人要想实现这样的能力&#xff0c;往往需要繁琐的结构和复杂的控制系统。为此&#xff0c;来自新加坡南洋理工大学的研究人员从覆盖…...

SpringBoot 自定义 Starter 实现

一、定义&#xff0c;什么是Starter SpringBoot Starter 是”一站式服务&#xff08;one-stop service&#xff09;“的依赖 Jar 包&#xff1a; 包含 Spring 以及相关技术&#xff08;比如Redis&#xff09;的所有依赖提供了自动配置的功能&#xff0c;开箱即用提供了良好的…...

「Spring MVC」Session、Cookie

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;JavaEE &#x1f387;欢迎点赞收藏加关注哦&#xff01; Spring MVC &#x1f349;Session & Cookie&#x1f34c;联系与区别 &#x1f349;获取 Cookie&#x1f349;存储 & 获取 Sess…...

Java虚拟机:垃圾回收器

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 037 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进一步完善自己对整个 Java 技术体系来充实自…...

ES6-ES13学习笔记

初识ES6 ECMAScript 6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准&#xff0c;已经在 2015 年 6 月正式发布了。它的目标&#xff0c;是使得 JavaScript 语言可以用来编写复杂的大型应用程序&#xff0c;成为企业级开发语言。 1997年&#xff1a;EC…...

【Qt开发】QtCharts图表——在ui上添加QChartView控件并进行绘图配置

【Qt开发】QtCharts图表——在ui上添加QChartView控件并进行绘图配置 文章目录 控件安装和模块导入在ui上添加QChartView控件QChartView图表配置附录&#xff1a;C语言到C的入门知识点&#xff08;主要适用于C语言精通到Qt的C开发入门&#xff09;C语言与C的不同C中写C语言代码…...

Android14 屏幕录制(屏幕投影)和音频播放采集

Android 5开始支持屏幕采集, Android 10支持音频播放采集&#xff0c;不过Android 14用前台服务做屏幕录制时要增加一些处理. 1. app manifest 需要增加: <manifest><uses-permission android:name"android.permission.FOREGROUND_SERVICE" /><uses…...

卡尔曼滤波+LQR实战:用Python手写一个LQG控制器(附Jupyter Notebook)

卡尔曼滤波LQR实战&#xff1a;用Python手写一个LQG控制器&#xff08;附Jupyter Notebook&#xff09; 在机器人控制和自动化系统设计中&#xff0c;LQG&#xff08;Linear Quadratic Gaussian&#xff09;控制是一种经典且强大的控制策略。它巧妙地将卡尔曼滤波的状态估计能力…...

Simulink与Plecs联合仿真实现三相桥式电路能量双向流动

simulinkplecs联合仿真源件&#xff0c;三相桥式电路&#xff0c;采用母线电压外环与电流内环控制&#xff0c;可整流也可逆变并网&#xff0c;实现能量双向流动&#xff0c;采用SVPWM调制方式。 1.plecssimulink 2.SVPWM 3.双闭环 支持simulink2022以下版本&#xff0c;联系跟…...

【Java】UTF-8变长编码及其3字节存储奥秘

UTF-8 是一种变长编码&#xff0c;一个字符可能由 1 到 4 个字节组成。 解码时&#xff08;将字节数组转回 String&#xff09;&#xff0c;计算机并不需要“猜”或者去查表&#xff0c;因为长度信息本身就包含在字节的“头部”里。这就是 UTF-8 设计的精妙之处&#xff1a;它是…...

如何让实验室管理“更简单”?——King’s LIMS以灵活与智能,重构高效运营新范式

在日常实验室管理中&#xff0c;流程繁琐、数据难溯源、报告生成低效、多场景管控混乱等问题&#xff0c;常成为拖慢运营节奏、抬升运维成本的“隐形阻力”。要打破管理困局、实现轻量化高效运维&#xff0c;选对数字化工具是关键。然而&#xff0c;在选择LIMS的过程中&#xf…...

Linux内核进程创建与调度机制详解

Linux内核进程创建机制深度解析&#xff1a;从fork到进程调度1. 进程创建概述在Linux操作系统中&#xff0c;进程创建是通过fork系统调用实现的。fork系统调用会创建一个与父进程几乎完全相同的子进程&#xff0c;包括代码段、数据段、堆栈等内存空间的复制。本文将深入分析Lin…...

别再只盯着IoU了!用Python手把手教你计算语义分割的95% Hausdorff距离(附完整代码)

超越IoU&#xff1a;用Python实战95% Hausdorff距离的医学影像分割评估 当我们在医院看到CT扫描图像上肿瘤边缘被红色轮廓线精准勾勒时&#xff0c;很少有人会思考这背后的算法是如何评估自己分割结果的准确性的。传统指标如IoU&#xff08;交并比&#xff09;和Dice系数固然流…...

HelloWorld.h:嵌入式LED硬件抽象库设计与实战

1. 项目概述led是一个极简但高度工程化的嵌入式LED控制抽象库&#xff0c;其核心载体为单头文件HelloWorld.h。尽管项目名称朴素、文档极度精简&#xff08;Readme为空&#xff09;&#xff0c;但该命名本身即构成一种嵌入式开发领域的隐喻性宣言——它并非教学示例的代名词&am…...

Java高频面试题:RocketMQ有哪些使用场景?

大家好&#xff0c;我是锋哥。今天分享关于【Java高频面试题&#xff1a;RocketMQ有哪些使用场景&#xff1f;】面试题 。希望对大家有帮助&#xff1b;Java高频面试题&#xff1a;RocketMQ有哪些使用场景&#xff1f;RocketMQ 是阿里巴巴开源的一款分布式消息中间件&#xff0…...

如何使用Compiler Explorer实时编译原理:揭秘代码到汇编的转换过程

如何使用Compiler Explorer实时编译原理&#xff1a;揭秘代码到汇编的转换过程 【免费下载链接】compiler-explorer Run compilers interactively from your web browser and interact with the assembly 项目地址: https://gitcode.com/gh_mirrors/co/compiler-explorer …...

TranslucentTB深度解析:如何用5MB内存实现Windows任务栏的视觉革命

TranslucentTB深度解析&#xff1a;如何用5MB内存实现Windows任务栏的视觉革命 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 在Windows…...