2021-5-9 日记 C++(十六)

本文介绍了一种使用两个栈来实现队列的方法。通过巧妙地利用两个栈的特点,实现了队列的基本操作:appendTail(入队)和deleteHead(出队)。文章详细解释了算法的原理,并提供了具体的实现步骤。

今天的leetcode题目是用两个栈实现队列

队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )

示例 1:

输入:
[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”]
[[],[3],[],[]]
输出:[null,null,3,-1]
示例 2:

输入:
[“CQueue”,“deleteHead”,“appendTail”,“appendTail”,“deleteHead”,“deleteHead”]
[[],[],[5],[2],[],[]]
输出:[null,-1,null,null,5,2]
提示:

1 <= values <= 10000
最多会对 appendTail、deleteHead 进行 10000 次调用

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

首先看题,我们普遍认知的栈是FILO(First In Last Out)先进后出的,而队列则是FIFO先进先出的,我们要让栈底的元素先出,就要借助一个辅助栈,同时也就达成了题目要求用两个栈实现队列的要求。

第一步我们先想的是怎么用这个辅助栈,比如栈1先压进两个数1和2,那么2在上1在下,怎么样才能把1弄到栈顶,让1先出呢?

很显然的我们可以先把栈1的栈顶元素“搬”到栈2,这样就可以完成栈1所有元素的倒置,并且让原本栈底的元素变成栈顶元素。

那如果栈1的元素更多呢?比如1、2、3、4、5顺序压入栈1,我们要取到3,也就是把1、2、3都“出队”。那么很简单的我们先把5压入栈2,接着是4…一直到1,到1之后再把1出栈、2出栈、3出栈,随后完成操作。

大概有了思路后就是编程time了,思路清晰后其实不难写出答案
1、第一步,定义栈1和栈2

    stack<int>stack1,stack2;

2、第二步,定义入栈函数

    void appendTail(int value) {
        stack1.push(value);
    }

3、第三步,定义出栈函数,我们分步讲解
(1)首先判断栈2是否空,如果栈1和栈2都为空则返回-1,若栈2为空栈1不空,则将栈1元素全部压入栈2

        if(stack2.empty())
        {
            while(!stack1.empty())
            {
                stack2.push(stack1.top());
                stack1.pop();
            }
        }
        if(stack2.empty())
        {
            return -1;
        }

(2)如果栈1元素全部压入栈2且栈2不为空,则开始输出栈顶元素,相当于开始执行队列的“出队”操作

        else
        {
            int returnnum = stack2.top();
            stack2.pop();
            return returnnum;
        }
考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值