代码随想录算法训练营第10天| 栈和队列 ● 232.用栈实现队列 ● 225. 用队列实现栈

对比学习(contrastive learning) 什么是自监督学习? 举个通俗的例子:即使不记得物体究竟是什么样子,我们也可以在野外识别物体。 我们通过记住高阶特征并忽略微观层面的细节来做到这一点。那么,现在的问题是,我们能否构建不关注像素级细节,只编码足以区分不同对象的高阶特征的表示学习算法?通过对比学习,研究人员正试图解决这个问题。 什么是对比学习? 对比学习是一种自监督学习方法,用于在没有标签的情况下,通过让模型学习哪些数据点相似或不同来学习数据集的一般特征。 让我们从一个简单的例子开始。想象一下,你是一个试图理解世界的新生婴儿。在家里,假设你有两只 阅读详情


前言

理论基础
这里介绍的c++的标准库底层实现逻辑
base的是数组,也就是连续空间,其实还有链式的,依据
讲解课程

232.用栈实现队列

在这里插入图片描述
使用栈实现队列的下列操作:

push(x) – 将一个元素放入队列的尾部。
pop() – 从队列首部移除元素。
peek() – 返回队列首部的元素。
empty() – 返回队列是否为空。
注意看题目的说明

  1. 告诉你了stack可以用list来做,这是提示
  2. 没有错误操作,说明不用考虑有问题的,例如empty的时候让它pop

思路💖

总体思路:需要两个栈一个输入栈,一个输出栈【看动图】
push:要数据放进输入栈就好
pop:输出栈如果为空,就把进栈数据全部导入进来(注意是全部导入),再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。
peek:直接调用写好的pop函数,因为pop函数弹出了元素res,所以再添加回去
empty:如果进栈和出栈都为空的话,说明模拟的队列为空了。
在这里插入图片描述

在这里插入图片描述

方法一

在python中,使用栈主要是数组,使用list的append和pop作为入栈出栈;
自己写的错误点

  1. 如下图所示:判断一个list是否为空,不能用stack==None,直接if stack就行在这里插入图片描述
  2. 如果使用否,python里面是用的not
  3. 忘了条件if,如out栈是空的才需要压栈,否则直接弹出out里面的
  4. 代码的优化:ele = self.stackin.pop()和 self.stackout.append(ele)这样的两句话可优化为一句话self.stackout.append(self.stackin.pop())
  5. 此外:not (self.stack_in or self.stack_out) 和not self.stackin and not self.stackout同义hhh
class MyQueue(object):

    def __init__(self):
        self.stackin = []  # python自己创建stack,用list、
        self.stackout = []

    def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        self.stackin.append(x)

    def pop(self):
        """
        :rtype: int
        """
        # if self.empty():#可以省略,因为说明里面说不会有违法操作
            # return None

        if not self.stackout:#如果out是空的,需要压栈入out,这个一开始忘了写了
            while self.stackin:  # 全部弹出到stackout里面
                ele = self.stackin.pop()
                self.stackout.append(ele)
        # pop就是显示最上面的ele的内容,并且弹出去
        result = self.stackout.pop()
        return result

    def peek(self):
        """
        :rtype: int
        """
        peek_ele = self.pop()  # 利用写好的pop函数
        self.stackout.append(peek_ele)
        return peek_ele

    def empty(self):
        """
        :rtype: bool
        """
        return not self.stackin and not self.stackout

225. 用队列实现栈

在这里插入图片描述

思路

主要思想:一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

  • pop和top的时候都是一样的操作,默认的状态是正常的队列的状态,所以这两个操作都是要把size–的元素放到队列的最后的。

在这里插入图片描述

方法一 一个队列来实现栈

知识点:python的deque是一个双向的队列,如果方向向左就是append和popleft,如果向右就是appendleft和pop对应;

下面自己写 的很简单

from collections import deque
class MyStack(object):

    def __init__(self):
        self.que = deque()


    def push(self, x):
        """
        :type x: int
        :rtype: None
        """
        self.que.append(x)


    def pop(self):
        """
        :rtype: int
        """
        #容错,如果为空
        if len(self.que) == 0:
            return None
        n = len(self.que)
        for i in range(0,n-1):
            self.que.append((self.que.popleft()))#popleft的加到后面
        return self.que.popleft()


    def top(self):
        """
        :rtype: int
        """
        if len(self.que) == 0:
            return None
        n = len(self.que)
        for i in range(0,n-1):
            self.que.append((self.que.popleft()))#popleft的加到后面
        tmp = self.que.popleft()
        self.que.append(tmp) #变成正常的队列的顺序
        return tmp



    def empty(self):
        """
        :rtype: bool
        """
        return not self.que

方法二 两个队列来实现栈

我这个没看,以后有时间补充吧;
总体思路就是把size-1的移动到另外一个队列里面;【讲解里面有动图】

from collections import deque

class MyStack:

    def __init__(self):
        """
        Python普通的Queue或SimpleQueue没有类似于peek的功能
        也无法用索引访问,在实现top的时候较为困难。

        用list可以,但是在使用pop(0)的时候时间复杂度为O(n)
        因此这里使用双向队列,我们保证只执行popleft()和append(),因为deque可以用索引访问,可以实现和peek相似的功能

        in - 存所有数据
        out - 仅在pop的时候会用到
        """
        self.queue_in = deque()
        self.queue_out = deque()

    def push(self, x: int) -> None:
        """
        直接append即可
        """
        self.queue_in.append(x)


    def pop(self) -> int:
        """
        1. 首先确认不空
        2. 因为队列的特殊性,FIFO,所以我们只有在pop()的时候才会使用queue_out
        3. 先把queue_in中的所有元素(除了最后一个),依次出列放进queue_out
        4. 交换in和out,此时out里只有一个元素
        5. 把out中的pop出来,即是原队列的最后一个
        
        tip:这不能像栈实现队列一样,因为另一个queue也是FIFO,如果执行pop()它不能像
        stack一样从另一个pop(),所以干脆in只用来存数据,pop()的时候两个进行交换
        """
        if self.empty():
            return None

        for i in range(len(self.queue_in) - 1):
            self.queue_out.append(self.queue_in.popleft())
        
        self.queue_in, self.queue_out = self.queue_out, self.queue_in    # 交换in和out,这也是为啥in只用来存
        return self.queue_out.popleft()

    def top(self) -> int:
        """
        写法一:
        1. 首先确认不空
        2. 我们仅有in会存放数据,所以返回第一个即可(这里实际上用到了栈)
        写法二:
        1. 首先确认不空
        2. 因为队列的特殊性,FIFO,所以我们只有在pop()的时候才会使用queue_out
        3. 先把queue_in中的所有元素(除了最后一个),依次出列放进queue_out
        4. 交换in和out,此时out里只有一个元素
        5. 把out中的pop出来,即是原队列的最后一个,并使用temp变量暂存
        6. 把temp追加到queue_in的末尾
        """
        # 写法一:
        # if self.empty():
        #     return None
        
        # return self.queue_in[-1]    # 这里实际上用到了栈,因为直接获取了queue_in的末尾元素

        # 写法二:
        if self.empty():
            return None

        for i in range(len(self.queue_in) - 1):
            self.queue_out.append(self.queue_in.popleft())
        
        self.queue_in, self.queue_out = self.queue_out, self.queue_in 
        temp = self.queue_out.popleft()   
        self.queue_in.append(temp)
        return temp


    def empty(self) -> bool:
        """
        因为只有in存了数据,只要判断in是不是有数即可
        """
        return len(self.queue_in) == 0

总结

内容很简单。。。。但是今天又是发烧又是拉肚子,还是拖到了晚上

VSCode+PlatformIO新建工程卡成狗?3步提速大法实测有效(附镜像源配置) 针对VSCode+PlatformIO新建工程时因依赖下载缓慢导致的加载慢问题,本文提供了三步核心提速方案。通过配置Python环境变量、修改PlatformIO插件设置以使用国内镜像源,并优化pip配置文件,实测可大幅缩短工程创建时间,有效解决创建工程卡顿的痛点。 阅读详情

相关推荐

ArcGIS Pro 拓扑编辑实战:从‘地图拓扑’到‘共享编辑’,手把手教你批量修改要素

本文详细介绍了ArcGIS Pro中的拓扑编辑功能,从地图拓扑配置到共享编辑技巧,手把手教你如何批量修改要素。通过实战案例展示拓扑编辑在城市规划、地籍管理等场景中的应用,显著提升编辑效率并减少拓扑错误,是现代GIS技术的重要生产力工具。

weixin_30500473的博客 505

代码随想录算法训练营第10天||栈和队列的理论基础、232.用栈实现队列● 225. 用队列实现栈

所以我们要使用队列模拟栈,就必须在出队的时候将最后一个元素出队,所以我们可以借助两个队列,一个队列用来存放入栈的元素,另一个队列作为中转站存放出队时最后一个元素的前面所有元素,在模拟出栈操作的时候将,队列中除最后一个元素的所有元素都放入另一个队列中,然后将最后一个元素出队即可。如果队列想弹出一个元素,我们必须要先判断出栈中有没有元素,如果出栈中有元素我们就将出栈中的元素弹出,如果出栈中没有元素,我们就将入栈中的元素都放入出栈中然后再弹出。用栈的基本函数去模拟队列,需要主要的是,模拟队列的出队操作。

m0_56068266的博客 140

Profinet从站开发初体验:用p-net开源库和树莓派快速搭建一个IO设备模拟器

本文详细介绍了如何使用p-net开源库和树莓派快速搭建Profinet从站IO设备模拟器。从开发环境准备、p-net源码编译到设备模拟器功能实现,提供了全流程实战指南,帮助开发者快速掌握工业通信协议开发技巧,适用于工业自动化领域的设备互联测试与验证。

weixin_30384217的博客 383

代码随想录算法训练营第10天|232. 用栈实现队列,225. 用队列实现栈,20. 有效的括号,1047. 删除字符串中的所有相邻重复项

在删除相邻重复项的时候,其实就是要知道当前遍历的这个元素,我们在前一位是不是遍历过一样数值的元素,就是用栈来存放,那么栈的目的,就是存放遍历过的元素,当遍历当前的这个元素的时候,去栈里看一下我们是不是遍历过相同数值的相邻元素。用两个队列que1和que2实现队列的功能,que2其实完全就是一个备份的作用,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

qq_44932556的博客 2195

基于gm/id方法的折叠式共源共栅放大器设计实践

本文详细介绍了基于gm/id设计方法进行折叠式共源共栅放大器设计的完整流程。该方法通过确定晶体管的跨导效率(gm/id)作为核心设计参数,将复杂的放大器设计转化为有明确路径的优化问题。文章以设计一个增益80dB、带宽1GHz的两级放大器为例,逐步拆解了从指标分解、关键晶体管工作点选取、到实战仿真与微调的全过程,特别强调了第二级设计对稳定性的影响以及相位裕度的调试技巧。

w8x9y0z1的博客 415

GD32F470移植LWIP协议,PHY芯片DP83848I

也就是说前24位是有规定的,其中48位MAC中的前几位也是有着对应的含义的。2、旧版LWIP(如1.4.1)存在DHCP状态机卡死问题,建议升级至2.1.3+。

m0_61973119的博客 1590

代码随想录算法训练营第十天|232.用栈实现队列、225.用队列实现栈

的条件来判断循环的终止条件是不适用的,因为这种条件假设栈中的元素都是非负整数,并且最后一个元素是-1。除非特定地规定了这样的约定,否则这种写法是不安全的,并且在一般情况下也是不符合栈的特性的。如果用一个队列模拟栈,假如队列中有n个元素,那么把前n-1个元素弹出来再加入到这个队列,然后把最后一个元素弹出,这样就和出栈的顺序一致了(我开始以为这个元素弹出就。弹出操作时要先判断出栈是否为空,当出栈为空时把入栈中的元素加到出栈中,如果出栈不为空那么直接从出栈中拿元素。,这样可以确保在栈为空之前处理所有的元素。

weixin_51871394的博客 1663

mpv 源码深度解析:从 MPlayer 遗产到现代媒体播放器架构

做减法优于做加法:不值得维护的功能就移除(DVD 菜单、流缓存等)单线程事件驱动:核心逻辑在单线程中运行,通过 dispatch 队列处理并发分离关注点:demuxer 线程、VO 线程、脚本线程各司其职质量优先:使用 GPU 着色器而非固定功能硬件,默认软件解码(更可靠)可嵌入性:libmpv API 让 mpv 可以作为库嵌入其他应用mpv 是一个用纯 C 实现的、工程质量极高的媒体播放器。它的代码库展示了一个事实:C 语言完全可以通过良好的架构设计来实现复杂的多媒体系统。

世界那么大,我想去看看~【随心更新,看世界去了😄】 88

代码随想录算法训练营第十天 | 232.用栈实现队列、225. 用队列实现栈

这道题目要求用队列实现栈,我们不必再用两个队列,因为队列和栈无非就是入栈和出栈的顺序不同,只要仔细思考一下就会发现,入栈操作,我们就向队列中push即可,出栈时为了让最后进入队列的元素出去,我们不得不把队列前面的元素都pop掉,但是不能实际扔掉前面的值,于是我们就把前面的值再放到队列末尾即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

Tong_1024_的博客 1748

使用 Python 实现基于 AGA8 GERG - 2008 方程计算掺氢天然气压缩因子的示例代码

AGA8 GERG - 2008 方程是用于计算天然气混合物热力学性质的一种方法,下面是一个使用 Python 实现基于 AGA8 GERG - 2008 方程计算掺氢天然气压缩因子的示例代码。需要注意的是,AGA8 GERG - 2008 方程非常复杂,完整实现需要大量的系数和详细的计算步骤。这里我们简化了部分过程,使用CoolProp库来完成计算,因为CoolProp已经实现了 GERG - 2008 方程。

AI的内部世界的博客 887

多智能体强化学习MATD3算法完整复现与分析

多智能体强化学习MATD3算法复现与分析摘要 MATD3算法是多智能体深度强化学习领域的重要进展,通过改进MADDPG算法,引入双Q学习、延迟策略更新和目标策略平滑等技术,显著提升了算法稳定性。本文完整复现了MATD3算法,详细解析了其数学原理,包括部分可观测马尔可夫博弈模型和TD3核心思想。在实现层面,设计了集中式Critic和分布式Actor的神经网络架构,采用PyTorch框架构建了Actor-Critic网络模块,包含精心设计的权重初始化和训练流程。该算法有效解决了多智能体环境中的非平稳性、信用分配

max500600的博客 529

代码随想录算法训练营第八天 | 232.用栈实现队列、225.用队列实现栈

代码随想录算法训练营第八天 | 232.用栈实现队列、225.用队列实现栈

北天的博客 1061

OpenCASCADE完整教程专栏完整目录

OpenCASCADE完整教程专栏完整目录

希望我的博客,能帮上你解决学习中工作中所遇到的问题 9698

代码随想录算法训练营第10天 |● 理论基础● 232.用栈实现队列● 225. 用队列实现栈

peek()的实现,直接复用了pop(), 要不然,对stOut判空的逻辑又要重写一遍。一定要懂得复用,功能相近的函数要抽象出来,不要大量的复制粘贴,很容易出问题!复用可以使代码简便化。主要是通过灵活使用队列和栈,使里面的数据交换顺序,让栈与队列的输出顺序保持一致。

Laulian的博客 1089

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

代码随想录算法训练营day10

今天是算法营的第10天,不知不觉已经第10天了!希望自己能够坚持下来!今日任务:● 栈与队列的理论基础● 232.用栈实现队列● 225. 用队列实现栈● 20. 有效的括号●1047. 删除字符串中的所有相邻重复项今天主要是学习了:1.重新复习了一遍队列和栈的知识。2.才想起来string也可以像容器一样用empty(),push_back(),back()这种操作!(之前都没用过)明天继续加油!

qq_38365428的博客 833

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

代码随想录算法训练营第九天|理论基础,232.用栈实现队列,225. 用队列实现栈

队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾;int pop() 从队列的开头移除并返回元素;请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。int top() 返回栈顶元素;核心思想:一个队列在模拟栈弹出元素的时候只要将队列头部的元素(除了最后一个元素外) 重新添加到队列尾部,此时再去弹出元素就是栈的顺序了。

weixin_47748259的博客 1089

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

代码随想录算法训练营Day10|232.用栈实现队列、225. 用队列实现栈

代码随想录算法训练营Day10|232.用栈实现队列、225. 用队列实现栈

qq_41929830的博客 1787

代码随想录算法训练营 DAY 10 | 232.用栈实现队列 225.用队列实现栈

比较一下队列和栈相关方法的不同:队列:add():在队尾添加元素remove():删除并返回队头isEmpty():是否为空栈:push():压入元素pop():弹出栈顶元素,并返回栈顶元素push():压入元素pop():弹出栈顶元素,并返回栈顶元素peek():返回栈顶元素其他求长度size(),求堆头/栈顶peek()和清空clear()都是一样的!注意在java中,栈是一个实现类。而队列是一个接口,实现类有LinkedList和PriorityQueue。

qq_35904005的博客 1120

代码随想录算法训练营第10天|栈与队列理论基础、232.用栈实现队列、225.用队列实现栈

栈 队列 Java 模拟

qq_45023167的博客 1087

代码随想录算法训练营第十天 | 232.用栈实现队列,225. 用队列实现栈[栈与队列篇]

栈、队列、链表

leehal的博客 686

代码随想录算法训练营第十天|栈和队列、Leetcode232 用栈实现队列、Leetcode225 用队列实现栈

由Silicon Graphics Computer Systems公司参照HP STL实现,主要设计者也是STL之父Alexandar Stepanov,被Linux的C++编译器GCC所采用,SGI STL是开源软件,源码可读性甚高。C++STL的版本实现有很多,包括:HP STL、SGI STL、STL Port、P.J.Plauger STL和Rouge Wave STL等。栈提供push和pop等接口,元素操作遵守先进后出的规则,因此栈不提供走访功能,也不提供迭代器。你所使用的语言也许不支持栈。

Demok123的博客 992

Carl代码随想录算法训练营-Day 10-栈与队列理论基础、232.用栈实现队列、225. 用队列实现栈

从原理上分析了栈与队列的理论基础知识,并用自定义双链表结构完成了实现。完成了leetcode上232.用栈实现队列、225. 用队列实现栈,一共两道相关题目,进行了具体的思路分析以及Java代码实现。

BuleFACE_Zhang的博客 1133

代码随想录算法训练营第day10|232.用栈实现队列、 225. 用队列实现栈

思路:栈后进先出,队列先进先出,使用栈来模式队列的行为,如果仅仅用一个栈,是一定不行的,所以需要两个栈。出栈操作:将除最后元素外的队列前面的元素依次出队并入队尾,此时对头元素即为栈顶元素。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(请你仅使用两个栈实现先入先出队列。,再从出栈弹出数据,如果输出栈不为空,则直接从出栈弹出数据就可以了。在push数据的时候,只要数据放进输入栈就好,myStack.empty();

qq_60513199的博客 1074

代码随想录算法训练营第十天| 栈与队列理论基础、LeetCode 232.用栈实现队列、LeetCode 225.用队列实现栈

简单学习了栈和队列的一些基本知识

qq_64336203的博客 1393

代码随想录算法训练营Day9 | Leetcode 232用栈实现队列、225用队列实现栈、20有效的括号、1047删除字符串中的所有相邻重复项

是一种遵循先入后出逻辑的线性数据结构,一般使用来实现,底层是动态数组,适合末尾高效操作。

叽里呱啦大王的博客 1013

代码随想录算法训练营第十天|232.用栈实现队列、 225. 用队列实现栈、 20. 有效的括号、 1047. 删除字符串中的所有相邻重复项

参考文档:代码随想录阅读大概需要5min。

wunan233的博客 1264
上一篇: 代码随想录算法训练营第9天| kmp算法
下一篇: 代码随想录算法训练营第11天|● 20. 有效的括号 ● 1047. 删除字符串中的所有相邻重复项 ● 150. 逆波兰表达式求值
Xalileetcode
博客等级 码龄7年 482粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值