用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 Nonedef empty(self):if len(self.stack) == 0:return Trueelse:return Falsestack = 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 Trueelse:return Falsedef pop(self):if self.empty():return Noneif 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())

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

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

相关文章

Nginx或Tengine服务器配置SSL证书

目录 前提条件 步骤一:下载SSL证书 步骤二:在Nginx服务器安装证书 步骤三:验证SSL证书是否配置成功 前提条件 已通过数字证书管理服务控制台签发证书SSL证书绑定的域名已完成DNS解析,即您的域名与主机IP地址相互映射已在Web服…

【高校科研前沿】北师大陈晋教授团队在遥感顶刊发表最新成果:ClearSCD模型:在高空间分辨率遥感影像中综合利用语义和变化关系进行语义变化检测

01文章简介 论文名称:The ClearSCD model: Comprehensively leveraging semantics and change relationships for semantic change detection in high spatial resolution remote sensing imagery(ClearSCD模型:在高空间分辨率遥感影像中综合…

谷歌上架攻略:个人号20人连续14天封闭测试的详细流程及相关注意事项

众所周知,近年来,Google play为了确保应用质量和用户体验,对开发者提出不少新要求。其中,对于个人开发者的一项要求是,自2023年11月13日起,新注册的个人开发者账号在上架正式版应用前,必须经过2…

最新版Ceph( Reef版本)文件存储简单对接k8s(下集)

假如ceph集群已经创建 1.创建cephfs_pool存储池 ceph osd pool create fs_kube_data 16 162.创建cephfs_metadata存储池 ceph osd pool create fs_kube_metadata 16 163 创建cephfs ceph fs new cephfs01 fs_kube_metadata fs_kube_data4 设置最大活动数 ceph fs set cephfs01…

CCF CSP 认证考试历年真题满分题解(所有前四题)

CCF CSP 认证考试历年真题满分题解(所有前四题) 前言 原本刷题的动机仅仅是为研究生复试的机试环节做准备,我通过刷csp的真题来锻炼自己,因为上次的机试题目全部是csp真题,最后也是顺利上岸。空闲之际,我…

大模型prompt实例:知识库信息质量校验模块

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 大模型应用向开发路径:AI代理工作流大模型应用开发实用开源项目汇总大模…

关于DDD和COLA的一些总结和思考

1|0思维:面向对象和面向过程 领域驱动设计本质上是讲的面向对象,但是谈面向对象,始终无法绕开面向过程,所以我们先好好说一下面向过程和面向对象这两个概念。 什么是面向过程呢,其实就是我们学习编程时最初被植入的逻辑…

CTF数据安全大赛crypto题目解题过程

CTF-Crypto加密题目内容 下面是一个Base64加密的密文 bXNobnszODdoajM3MzM1NzExMzQxMmo4MGg0bDVoMDYzNDQzNH0原文链接: 数据安全大赛CTF-Crypto题目 - 红客网-网络安全与渗透技术 我们用Python写一个解密脚本: import base64 import time #base64加密…

从静态PPT到智能演讲——人工智能在演示文稿中的应用

1.概述 在这个信息过载的时代,能够吸引并持续吸引观众的注意力无疑成为了一项艰巨的任务。公众演讲领域正经历着一场由人工智能(AI)引领的革命。AI不仅在制作引人入胜的内容方面发挥作用,而且在分析演讲的传递方式上也起着关键作…

返回分类信息(带层级)

文章目录 1.前端展示分类管理信息1.目前项目架构2.启动前后端项目1.启动mysql容器2.启动后端 renren-fast3.启动前端1.界面2.用户名密码都是admin 3.创建分类管理菜单1.菜单管理 -> 新增 -> 新增目录2.刷新3.能够新增菜单的原因是前端脚手架与renren-fast后端脚手架通信&…

ego_planner学习

飞行类型 enum TARGET_TYPE { MANUAL_TARGET 1, PRESET_TARGET 2, REFENCE_PATH 3 }; target_type_ TARGET_TYPE::PRESET_TARGET) trigger_sub_ nh.subscribe("/traj_start_trigger", 1, &EGOReplanFSM::triggerCallback, this); nh.param("fsm/waypo…

两个系统中的数据匹配方法

一、首先介绍几种常用的相似度计算 1.1最长公共子序列(LCS) 最长公共子序列(Longest Common Subsequence,简称LCS)是在两个或多个序列中寻找最长的公共子序列的问题。这里所说的“子序列”指的是原序列中元素的子集,但保持元素的原…