用python写算法——栈笔记

  • 栈的定义
  • 相关算法题

栈的定义

1.它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。(来自百度)
在这里插入图片描述

特征: 后进先出LIFO(last-in,first-out)
栈的基本操作

  • 进栈:push

  • 出栈:pop

  • 取栈顶:gettop
    在python中可以用列表实现栈。

  • 进栈:li.append

  • 出栈:li.pop

  • 取栈顶:li[-1]

class Stack:
    def __init__(self):
        self.stack = []

    def push(self, element):
        self.stack.append(element)

    def pop(self):
        return self.stack.pop()

    def get_top(self):
	    # if len(self.stack) > 0:
	    if not self.empty():
	        return self.stack[-1]
	    else:
	        return None

    def empty(self):
        if len(self.stack) == 0:
            return True
        else:
            return False
   		
stack = Stack()
stack.push(1)
stack.push(2)
stack.push(3)
print(stack.get_top())

结果是:取出栈顶元素3

3

相关算法题

1.用两个栈实现队列
牛客网:用两个栈实现队列
描述
用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。
在这里插入图片描述

class Solution:
    def __init__(self):
        self.stack_in = []
        self.stack_out = []

    def push(self, element):
        self.stack_in.append(element)

    def empty(self):
        if len(self.stack_in) == 0 and len(self.stack_out) == 0:
            return True
        else:
            return False

    def pop(self):
        if self.empty():
            return None

        if self.stack_out:
            return self.stack_out.pop()
        else:
            while self.stack_in:
                self.stack_out.append(self.stack_in.pop())
            return self.stack_out.pop()


#result = Solution()
#result.push(1)
#result.push(2)
#result.push(3)

#print(result.pop())
	

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

12个网上赚钱野路子信息差,人人可做的赚钱小项目!

在这个多元化的时代,副业已经成为许多人增加收入、实现自我价值的重要途径。今天,我们就来聊聊那些既有趣又能赚钱的副业项目,让你的钱包鼓起来! 1.文字创作 写作不仅是情感的宣泄,更是财富的积累。无论是自媒体文、软…

【3dmax笔记】036:FDD修改器

一、FDD修改器简介 FDD修改器是对模型进行变形处理的命令,FDD后面的数字越大,编辑节点越多,编辑越精细,但是FDD控制点多的同时,模型上的节点也要多才可以。 FFD修改器是一种非常灵活的修改器,可以让我们对模型进行自由的变形操作。通过在FFD修改器中设置变形点,我们可…

HarmonyOS开发案例:【生活健康app之获取成就】(3)

获取成就 本节将介绍成就页面。 功能概述 成就页面展示用户可以获取的所有勋章,当用户满足一定的条件时,将点亮本页面对应的勋章,没有得到的成就勋章处于熄灭状态。共有六种勋章,当用户连续完成任务打卡3天、7天、30天、50天、…

域基础-NTLM协议

简介 NTLM(New Technology LAN Manager)协议是微软用于Windows身份验证的主要协议之一。继SMB、LM协议之后微软提出了NTLM协议,这一协议安全性更高,不仅可以用于工作组中的机器身份验证,又可以用于域环境身份验证,还可以为SMB、H…

任务:单域,域树的搭建

一、单域: 搭建所需的系统:win2016 sever,win10 1.在创建域前,先设置静态ip 先查看win2016 sever的IP, ip:192.168.154.133 网关:192.168.154.2 DNS服务器:192.168.154.2 设置…

【计算机网络原理】初识网络原理和一些名词解释​​

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

前端笔记-day04

文章目录 01-后代选择器02-子代选择器03-并集选择器04-交集选择器05-伪类选择器06-拓展-超链接伪类07-CSS特性-继承性08-CSS特性-层叠性09-CSS特性-优先级11-Emmet写法12-背景图13-背景图平铺方式14-背景图位置15-背景图缩放16-背景图固定17-background属性18-显示模式19-显示模…

Agisoft Metashape Pro for Mac/win:开启三维建模新视界

在当今数字化的时代,三维建模技术正发挥着越来越重要的作用。而 Agisoft Metashape Pro for Mac/win 无疑是该领域的一颗璀璨明星。 这款强大的三维建模软件为专业人士和爱好者提供了无与伦比的工具和功能。无论你是从事建筑设计、考古研究、影视特效制作还是地理信…

acer笔记本怎样进行系统还原?教你两招!

acer笔记本怎样进行系统还原?教你两招! 作为笔记本用户,你在日常使用中可能会遇到各种各样的电脑问题。一般来说,对于一些小问题,我们可以通过一些简单的操作来解决,比如重新启动电脑或者长按电源键强制关机…

经典多模态大模型

“浅对齐”模型 经典多模态结构BLIP2 Motivation 端到端的进行vision-language预训练成本太大了,之前存在很多预训练好的模型,这篇文章希望能够使用这些训练好的参数,节约成本。 如果直接冻结预训练好的参数,去做下游任务&…

防火墙技术基础篇:解析防火墙应用层代理概念及功能

防火墙技术基础篇:解析防火墙应用层代理概念及功能 1 应用层代理的概念 应用层代理(Application Proxy):防火墙应用层代理是网络安全领域中的一种重要技术,工作在OSI模型的第七层,即应用层。它通过代理服…

ubuntu系统在有无NVIDIA驱动下查看显卡型号

在ubuntu系统下,分别在有nvidia显卡驱动和无nvidia显卡驱动时,查看nvidia显卡型号。 1、有nvidia显卡驱动时的查看方式 nvidia-smi -L会显示如下信息: GPU 0: NVIDIA GEForce GTX 1660 SUPER (UUID: GPU-*****)2、无nvidia显卡驱动时的查看…

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四)

基于 LlaMA 3 LangGraph 在windows本地部署大模型 (四) 大家继续看 https://lilianweng.github.io/posts/2023-06-23-agent/的文档内容 第三部分:工具使用 工具的使用是人类的一个显着而显着的特征。我们创造、修改和利用外部物体来完成超…

IDEA使用技巧2—发布web项目

作者:私语茶馆 1.War包类型 发布Web项目有两种模式:war和war exploded, war模式:将WEB工程以包的形式上传到服务器 ;war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器; war ex…

6.数据库

1.实体用矩形表示,属性用椭圆表示,联系用菱形表示 2.层次模型用数表示 3.网状模型用图结构表示 4.关系模型用二维表格结构来表示 5.概念模式基本表 外模式视图 内模式存储 6.模式/内模式映像 外模式/模式映像 7.数据的物理独立性 跟内模式关系 逻辑是视图…

10分钟解决你电脑带不动3dmax渲染的问题‼️

你是否经常遇到这样的窘境: “创意如泉涌,操作如猛虎,却在渲染的关键时刻遭遇电脑崩溃,且发现工作成果未保存…” “在作业截止日期临近时,你的笔记本电脑突然罢工,迫使你不得不在网吧度过漫漫长夜来完成…

【蚂蚁笔试题汇总】2024-05-11-蚂蚁春招笔试题-三语言题解(CPP/Python/Java)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新蚂蚁近期的春秋招笔试题汇总~ 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢&#x1f49…

Java医院绩效考核系统源码B/S+avue+MySQL助力医院实现精细化管理 医院综合绩效核算系统源码

Java医院绩效考核系统源码B/SavueMySQL助力医院实现精细化管理 医院综合绩效核算系统源码 医院绩效考核系统目标是实现对科室、病区财务指标、客户指标、流程指标、成长指标的全面考核、分析,并与奖金分配、学科建设水平评价挂钩。 具体功能模块包括收入核算、成本…

邂逅Linux--常见指令,万物为文件(一)

引子:在之前,我们经常听到Linux,那什么是Linux呢?Linux是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布&#xff…

最新ChatGPT中文系统网站源码+系统部署+支持AI对话、AI绘画、AI音乐等大模型

一、系统介绍 本文将介绍最新的ChatGPT中文版AI创作系统——星河易创AI系统,该系统基于ChatGPT的核心技术,融合了自然语言问答、绘画、音乐等创作功能,并兼容官方GPT全模型。该系统提供多样化的应用,包括GPTs的多场景应用、实时G…