网站建设服务标准ui网页界面设计素材

news/2025/9/27 11:31:04/文章来源:
网站建设服务标准,ui网页界面设计素材,网站建设出初级者选哪家,设计师网址导航官网入口文章目录 一、stack的使用1.stack的介绍2.stack的使用 二、queue的使用1.queue的护额晒2.queue的使用 三、stack和queue相关算法题1.最小栈2.栈的压入、弹出序列3.逆波兰表达式4.两个栈实现一个队列5.用两个队列实现栈6.二叉树的层序遍历1.双队列2.用一个变量levelSize去控制 7… 文章目录 一、stack的使用1.stack的介绍2.stack的使用 二、queue的使用1.queue的护额晒2.queue的使用 三、stack和queue相关算法题1.最小栈2.栈的压入、弹出序列3.逆波兰表达式4.两个栈实现一个队列5.用两个队列实现栈6.二叉树的层序遍历1.双队列2.用一个变量levelSize去控制 7.二叉树的层序遍历Ⅱ 一、stack的使用 1.stack的介绍 栈是一种容器适配器专门设计用于在 LIFO 上下文中操作(后进先出)其中元素只从容器的一端插入和提取。 栈被实现为容器适配器这些类使用特定容器类的封装对象作为其底层容器提供一组特定的成员函数来访问其元素。 元素从特定容器的“后端”被推入/弹出这被称为栈的顶部。 底层容器可以是任何标准的容器类模板也可以是其他一些专门设计的容器类。容器应该支持以下操作empty、size、back、push_back、pop_front 标准容器类 vector、deque 和 list 满足这些要求。默认情况下如果没有为特定的堆栈类实例化指定容器类则使用标准容器 deque。 这里我们需要知道的是Container适配器就是一个现有的容器进行的一个转换 也就是说适配器的本质就是一种复用 2.stack的使用 我们先看stack的接口有哪些 如上所示这里其实我们一看就已经猜出了七七八八了。因为与前面是string、vector、list是十分相似的。只要结合它的先进先出的特性我们就知道每个函数都是什么意思了。 对于stack的使用是非常简单的 void test_stack() {stackint st1;st1.push(1);st1.push(2);st1.push(3);st1.push(4);while (!st1.empty()){cout st1.top() ;st1.pop();}cout endl; }二、queue的使用 1.queue的护额晒 队列是一种容器适配器专门设计用于在FIFO上下文中操作(先进先出)其中将元素插入容器的一端并从另一端提取。 队列是作为容器适配器实现的容器适配器是使用特定容器类的封装对象作为其底层容器的类提供一组特定的成员函数来访问其元素。元素被推入特定容器的“后面”并从其“前面”弹出。 底层容器可以是标准容器类模板之一也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:empty、size、front、back、push_back、pop_back。 标准容器类deque和list满足这些要求。默认情况下如果没有为特定队列类实例化指定容器类则使用标准容器队列。 2.queue的使用 同样的我们先来看queue的接口有哪些 在这些接口中和stack是类似的只要我们知道了queue的特性是先进先出。我们就能很轻松的推测出每个接口的意思 对于queue的使用是很简单的 void test_queue() {queueint q;q.push(1);q.push(2);q.push(3);q.push(4);while (!q.empty()){cout q.front() ;q.pop();}cout endl; }三、stack和queue相关算法题 1.最小栈 题目链接最小栈 题目解析在这道题中我们为了模拟这种情况我们可以在成员变量中定义两个栈一个栈作为正常的出入数据使用一个栈用来存储最小值。 首先是构造函数由于我们的成员变量都是自定义类型所以会自动调用他们的默认构造函数即他们也会走初始化列表所以默认构造函数我们是可以直接不用管的。甚至于我们可以直接删掉题目给的构造函数因为我们不写编译器自己生成一个。 其次我们的大逻辑是这样的当我们最小栈为空的时候我们的最小栈是需要入一个数据的当我们将要插入的元素是小于等于最小栈要插入的元素的时候我们会将这个元素给入最小栈 当我们pop的时候我们也是同理的如果我们要删除的数据等于最小栈的栈顶元素那么就也要删除最小栈的栈顶元素。 class MinStack { public:MinStack(){}void push(int val) {st.push(val);if(min.empty()||(valmin.top())){min.push(val);}}void pop() {int valst.top();st.pop();if(valmin.top()){min.pop();}}int top() {return st.top();}int getMin() {return min.top();} private:stackint st;stackint min; };/*** Your MinStack object will be instantiated and called as such:* MinStack* obj new MinStack();* obj-push(val);* obj-pop();* int param_3 obj-top();* int param_4 obj-getMin();*/2.栈的压入、弹出序列 题目链接栈的压入弹出序列 题目解析我们可以使用一个栈来模拟它的入栈出栈逻辑只要顺着它的思路最终我们的这个栈是空栈的话那么就说明是匹配的否则不匹配 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定请勿修改直接返回方法规定的值即可** * param pushV int整型vector * param popV int整型vector * return bool布尔型*/bool IsPopOrder(vectorint pushV, vectorint popV) {// write code herestackint st;int npushV.size();int j0;for(int i0;in;i){st.push(pushV[i]);while(!st.empty() st.top()popV[j]){st.pop();j;} }return st.empty();} };3.逆波兰表达式 题目链接逆波兰表达式 再谈这道题之前我们应该先知道什么是逆波兰表达式我们正常的都是中缀表达式即32*5这种的都被称之为中缀表达式。 而中缀表达式在计算机中是很难进行运算的。我们需要先将其转换为后缀表达式前文所说的中缀表达式转化为后缀表达式后应该为3 2 5 * 。后缀表达式的特点就是操作数的顺序不变而操作符的顺序按照优先级进行了重排。 我们先来看一下后缀运算符是如何进行运算的 操作数入栈如果是操作符取出栈顶的两个元素进行计算计算结果放入栈中 那么如何使得中缀转为后缀呢 操作数输出即将操作数放到一个容器中操作符入栈 ①栈为空当前操作符比栈顶的优先级高继续入栈 ②栈不为空且当前操作符比栈顶的优先级低或者相等则输出栈顶操作符因为运算符的优先级只与它相邻的操作符有关是相对的如果后面出现了一个更高的操作符我们无法确定后面是否还有更高的操作符反而是如果有一个相对较低的操作符那么前两个肯定是可以进行运算的表达式结束后依次出栈顶的操作符注意有可能会在转换的中间出现连续出操作符的情况即栈里面已经存储了好几个运算符了下面的一个运算符要比好几个都要低就要连续出好几个运算符 比如说24-1*3这个中缀表达式按照上面的规则可以化为 上面都是正常情况的下的处理但是还有时候会出现括号的影响。 这里可以考虑加上一个特殊标记当我们这个标记生效时就代表进入括号内了。或者在这里走一个递归也是可以的。递归的方法就是在遇到括号的时候我们将括号里面的运算符就需要放入一个新的栈中了。相当于我们只需要让括号返回一个结果就可以了。但是数据还是输出在原来的顺序表中的 我们在回过头来看这道题我们有了上面的分析就很容易写出下面代码了。 class Solution { public:int evalRPN(vectorstring tokens) {stackint st;for(auto str : tokens){if(str||str-||str*||str/){int rightst.top();st.pop();int leftst.top();st.pop();switch(str[0]){case :st.push(leftright);break;case -:st.push(left-right);break;case *:st.push(left*right);break;case /:st.push(left/right);break;}}else{st.push(stoi(str));}}return st.top();} };4.两个栈实现一个队列 题目链接两个栈实现一个队列 对于这个题我们在之前也已经做过一次分析了只不过上一次是用C语言手撕了一个栈来实现了。而现在呢我们有C的库了因此我们就可以直接使用C的库来完成这件事。 class MyQueue { public:MyQueue() {}void push(int x) {_push.push(x);}int pop() {if(_pop.empty()){while(!_push.empty()){int val_push.top();_push.pop();_pop.push(val);}}int val_pop.top();_pop.pop();return val;}int peek() {if(_pop.empty()){while(!_push.empty()){int val_push.top();_push.pop();_pop.push(val);}}return _pop.top();}bool empty() {return (_push.empty()_pop.empty());} private:stackint _push;stackint _pop; };/*** Your MyQueue object will be instantiated and called as such:* MyQueue* obj new MyQueue();* obj-push(x);* int param_2 obj-pop();* int param_3 obj-peek();* bool param_4 obj-empty();*/5.用两个队列实现栈 题目链接用两个队列实现栈 这道题与上面的题类似我们也是曾经使用C语言做过不过由于C语言没有轮子就需要我们自己造轮子有了很多的麻烦。 class MyStack { public:MyStack() {}void push(int x) {if(q1.empty()){q2.push(x);}else{q1.push(x);}}int pop() {if(q1.empty()){while(q2.size()1){int valq2.front();q2.pop();q1.push(val);}int valq2.front();q2.pop();return val;}else{while(q1.size()1){int valq1.front();q1.pop();q2.push(val);}int valq1.front();q1.pop();return val;}}int top() {if(q1.empty()){return q2.back();}else{return q1.back();}}bool empty() {return (q1.empty()q2.empty());} private:queueint q1;queueint q2; };/*** Your MyStack object will be instantiated and called as such:* MyStack* obj new MyStack();* obj-push(x);* int param_2 obj-pop();* int param_3 obj-top();* bool param_4 obj-empty();*/6.二叉树的层序遍历 题目链接二叉树的层序遍历 对于这道题如果不是用C来完成的话用C去完成的话是非常难的。不仅我们要确保我们造的轮子是正确的而且还有很多细节需要进行处理但我们如果使用C的话可以极大的简化很多操作 1.双队列 我们可以使用两个队列去完成这件事一个队列用来存储结点指针一个队列用来存储该节点处于哪个层。这样我们就可以知道哪个结点是那个层的了自然我们就很容易的得知层序遍历了。 2.用一个变量levelSize去控制 这种思路是比较奇妙的我们使用一个变量来确定当前该层有多少个结点用一个队列来存储结点然后就是层序遍历的基本套路每出一个结点带来两个孩子。将每一层的数据存储在一个vector中然后一层结束后将这一层的vector插入到vectorvectorint中。 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:vectorvectorint levelOrder(TreeNode* root) {queueTreeNode* q;int levelSize0;if(root){q.push(root);levelSize1;}vectorvectorint vv;while(!q.empty()){vectorint v;for(int i0;ilevelSize;i){TreeNode* frontq.front();q.pop();v.push_back(front-val);if(front-left){q.push(front-left);}if(front-right){q.push(front-right);}}vv.push_back(v);levelSizeq.size();}return vv;} };7.二叉树的层序遍历Ⅱ 题目链接:二叉树的层序遍历Ⅱ 对于这道题目我们可以注意到他是让倒着遍历的。和前一道题基本是一样的只是改变了vv的顺序。即相当于将vv给逆序。那么这道题就太简单了直接将前面这道题给拷贝过来然后调用库里面的reverse即可 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { public:vectorvectorint levelOrderBottom(TreeNode* root) {queueTreeNode* q;int levelSize0;if(root){q.push(root);levelSize1;}vectorvectorint vv;while(!q.empty()){vectorint v;for(int i0;ilevelSize;i){TreeNode* frontq.front();q.pop();v.push_back(front-val);if(front-left){q.push(front-left);}if(front-right){q.push(front-right);}}vv.push_back(v);levelSizeq.size();}reverse(vv.begin(),vv.end());return vv;} };好了本期内容就到这里了 如果对你有帮助的话不要忘记点赞加收藏哦

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

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

相关文章

北极通讯网络题解(做题记录)

北极通讯网络题解(做题记录) 前言 本文以一道 Kruskal 的好题实例来讲一下 Kruskal 的过程,对于初学 Kruskal 的OIer们有很大的帮助。 luogu 相似题:P1991 无线通讯网。 题目简述 有 n 座村庄,每座村庄的坐标用一对…

如何在局域网中做网站wordpress怎样发布时间

SpringMVC 的入门 1环境搭建 1.1.创建工程 1.2.添加web支持 右键项目选择Add framework support... 2.添加web支持 ​ 3.效果 注意&#xff1a; 不要先添加打包方式将web目录要拖拽到main目录下&#xff0c;并改名为webapp 1.3.pom.xml <?xml version"1.0&q…

elasticsearch安装插件 - 实践

elasticsearch安装插件 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

个人学习——前端react项目框架

文件作用 package.json npm脚本部分"scripts" 项目启动与打包"dev": "vite" 启动 开发环境,开启本地服务器,支持热更新。 用法:npm run dev "build": "tsc &&…

软件基础第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/25rjjc这个作业的目标 对自我进行分析和评估,了解博客使用方法,说明对课程的想法姓名-学号 林子渊 2023333503079自我介绍: 我叫林子渊,来自 23 自动化…

网站建设7个基本流程分析统一门户登录

一、简述 这里的代码主要是基于图像的推荐系统,该系统利用 ResNet-50 深度学习模型作为特征提取器,并采用余弦相似度来查找给定输入图像的最相似嵌入。 该系统旨在根据所提供图像的视觉内容为用户提供个性化推荐。 二、所需环境 Python 3.x tensorflow ==2.5.0 numpy==1.21.…

.net商城网站模板下载宁乡电商网站建设收费

title: URL编码&#xff1a;原理、应用与安全性 date: 2024/3/29 18:32:42 updated: 2024/3/29 18:32:42 tags: URL编码百分号编码特殊字符处理网络安全应用场景标准演变未来发展 在网络世界中&#xff0c;URL&#xff08;统一资源定位符&#xff09;是我们访问网页、发送请求…

LGP9755 [CSP-S 2023] 种树 学习笔记

LGP9755 [CSP-S 2023] 种树 学习笔记 Luogu Link 前言 故地重游。 巧合的是,上次写这道题刚好是在去年的九月二十七日,整整一年前。 题意简述 给定一个 \(n\) 个点,\(n-1\) 条边的简单无向连通图。好吧,这片地本身…

7、revision 是 Maven 3.5+ 引入的现代版本管理机制 - 实践

7、revision 是 Maven 3.5+ 引入的现代版本管理机制 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

P1731 生日蛋糕 做题记录

洛谷P1731 生日蛋糕 做题记录 题意简述 一个生日蛋糕由几个圆柱体组成,每个圆柱体的底面半径和高从下到上严格递减,现给出蛋糕的体积 N pi 以及层数 M,试求蛋糕的最小表面积。 思路速通 基本为 DFS ,对于每层的半径…

详细介绍:【MySQL】MySQL数据库入门指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何有效提升代码覆盖率:从单元测试到集成测试的实践指南

Go语言代码覆盖率实现 一、什么是代码覆盖率代码覆盖率是软件测试中的一种白盒测试度量指标,表示程序源代码中被执行的比例。简单来说,就是“我的测试到底跑过多少代码”。 覆盖率常见的几种标准:语句覆盖(段覆盖、…

深入解析:SSM网络游戏交易系统a9n72(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面

深入解析:SSM网络游戏交易系统a9n72(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto …

Spring知识点(2)

一、有哪些依赖注入方式?构造方法注入:通过调用类的构造方法,推荐用于强依赖(没有依赖对象就没法工作)。这也是官方推荐的注入方式。好处:依赖不可变(final修饰)、更安全。@Component public class UserServic…

成都电子商务网站建设非寻服饰网站建设规划书

文章目录 “预训练微调大模型”的模式以提示/指令模式直接使用大模型“预训练微调大模型”模式和Prompt/Instruct模式的异同小结 “预训练微调大模型”的模式 经过预训练的大模型所习得的语义信息和所蕴含的语言知识&#xff0c;很容易向下游任务迁移。NLP应用人员可以根据自己…

超越实习期的AI自动化工具:播客工作流与Slack导出器实战

本文详细介绍实习期间基于Claude AI模型开发的两个自动化工具:播客工作流年省1250小时人工,Slack导出器实现智能知识检索。包含技术架构、问题解决方案和实际应用效果,展现AI如何增强企业工作效率。超越实习期的实习…

调度器的各项指标以及计算方式

CPU利用率 \[利用率=\frac{忙碌的时间}{总时间} \]系统吞吐量 单位时间内完成作业的数量 \[系统吞吐量=\frac{总共完成了多少道作业}{总共花了多少时间} \]周转时间 1.周转时间-平均周转时间\[作业周转时间=作业完成时…

​CentOS 7 安装 net-tools.rpm 包步骤详解(附 rpm 命令和 yum 方法)​附安装包

​CentOS 7 安装 net-tools.rpm 包步骤详解(附 rpm 命令和 yum 方法)​附安装包​一、先确认你的系统是 CentOS 7 或 RHEL 7 这个包是专门给 ​CentOS 7​ 或者 ​RHEL 7​(也就是 64 位系统)用的,文件名里的 el7…

青原区城乡建设局门户网站网站建设的系统简介

Kibana是一个开源的分析与可视化平台&#xff0c;设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。是es的可视化客户端之一。 一&#xff1a;下载 https://www.elastic.co/cn/kibana 我的es是elasticsearch-7.10.2版本&#x…

深入解析:【Linux】UDP 网络编程

深入解析:【Linux】UDP 网络编程2025-09-27 11:02 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !impor…