用python写算法——栈笔记

news2024/11/18 14:46:24

  • 栈的定义
  • 相关算法题

栈的定义

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())
	

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

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

相关文章

CLI举例:通过URL分类控制用户访问的网站

华为CLI举例:通过URL分类控制用户访问的网站 配置基于URL分类的URL过滤功能,可以实现对用户访问的某一类网站的控制。既可以是FW自带的预定义分类,也可以是管理员配置的自定义分类。 组网需求 如图1所示,FW作为企业网关部署在网络…

(Java)心得:LeetCode——5.最长回文子串

一、原题 给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba"…

ws注入js逆向调用函数

这里需要选择一个文件夹 随便 紫色为修改保存 记得ctrls保存 注入代码如下 (function() {var ws new WebSocket("ws://127.0.0.1:8080")ws.onmessage function(evt) {console.log("收到消息:" evt.data);if (evt.data "exit") {…

2024第十六届“中国电机工程学会杯”数学建模A题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

Edge视频增强功能

edge://flags/#edge-video-super-resolution 搜索Video查找 Microsoft Video Super Resolution 设置为Enabled

模型 空船效应

1 空船效应的应用 1.1 空船效应帮助客户服务人员面对挑战性客户 赵敏是一家大型电信公司的客户服务经理。在一次服务中,一位客户因为网络连接问题而非常愤怒,他通过电话对赵敏大声抱怨,并要求立即解决问题。一般在这种情况下,客…

Linux日常管理和服务器配置(二)

一、在系统中配置FTP服务器: 准备工作: a.下载ftp命令 sudo apt install vsftpd 可以先用命令更新一下库 sudo apt-get update 接着输入 systemctl status vsftpd 检查ftp运行状态 然后进入vsftpd.conf文件中修改write为 vim /etc/vsftpdf.conf …

【教学类-54-01】20240510超级对对碰(圆点拼图)(9*5、0-255随机)

作品展示 背景需求: 奕娃幼儿园小中大班益智区超级对对碰 - 小红书#幼儿园益智区 #幼儿园益智区素材 #幼儿园区域材料 #幼儿园环创https://www.xiaohongshu.com/discovery/item/6279bb4d000000002103be71?app_platformandroid&ignoreEngagetrue&app_ve…

Xilinx 千兆以太网TEMAC IP核简介

Xilinx 公司提供了千兆以太网MAC控制器的可参数化LogiCORET™IP解决方案,通过这个IPCore可以实现FPGA与外部网络物理层芯片的互连。基于Xilinx FPGA 的以太网设计,大大降低了工程的设计复杂度,缩短了开发周期,加快了产品的面市速度…

QT 客户端软件开发

QT 是一种功能强大且灵活的跨平台应用程序开发框架,但也存在一些技术难点,需要开发者仔细考虑和克服。以下是一些常见的 QT 软件开发的技术难点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 跨平台兼容性…

截图文字怎么识别?这里有三种识别方法

截图文字怎么识别?在数字化时代,信息的快速处理和转换成为了提高工作效率的关键。截图文字识别技术,作为连接视觉信息与数字文本的桥梁,极大地便利了我们的工作和生活。它允许用户从图像中提取文字内容,进而编辑、搜索…

软件开发项目实施方案-精华资料(Word原件)

依据项目建设要求,对平台进行整体规划设计更新维护,对系统运行的安全性、可靠性、易用性以及稳健性进行全新设计,并将所有的应用系统进行部署实施和软件使用培训以及技术支持。 根据施工总进度规划,编制本项目施工进度计划表。依据…

2024年电工杯数学建模A题思路 中国电机工程学会杯建模思路分析

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间:2024…

智能驱动,精准管理:打造高效干部管理系统

干部管理系统是现代组织管理中不可或缺的工具,它通过信息技术的应用,提高了干部管理的效率和准确性。干部管理系统的主要功能包括: 1. 信息管理:系统可以存储和管理干部的个人信息,包括基本资料、工作经历、教育背景、…

学习Java的日子 Day44 初识前端

Day44 HTML 学习路线: 前端:展示页面、与用户交互 — HTML 后端:数据的交互和传递 — JavaEE/JavaWeb 1.B/S和C/S B/S:浏览器/服务器 教务系统 C/S:客户端/服务器 优缺点 1.开发/维护成本:B/S相对低 2.运算…

# 电脑突然连接不上网络了,怎么办?

电脑突然连接不上网络了,怎么办? 一、原因分析: 1、IP 地址冲突 2、DNS 解析出现问题。 3、无线网卡驱动损坏。 二、解决方法: 1、修改自动获取 IP 地址为手动设置 IP 地址: 1)查看自己电脑自动获取…

Day 44 完全背包理论基础 518. 零钱兑换 II 377. 组合总和 Ⅳ

完全背包理论基础 ​ 完全背包和0-1背包的最大区别在于完全背包里的每个物品的数量都是无限个&#xff0c;而0-1背包每个物品只有一个&#xff1b; 内嵌循环遍历顺序 ​ 回顾一维数组0-1背包的遍历递推公式&#xff1a; for (int i 0&#xff1b; i < weight.size(); i)…

更适合户外使用的开放式耳机,佩戴舒适音质悦耳,虹觅HOLME NEO体验

随着气温的逐渐升高&#xff0c;不管是在室内工作娱乐&#xff0c;还是到户外运动健身&#xff0c;戴上一款合适的耳机都会帮我们隔绝燥热与烦闷&#xff0c;享受音乐与生活。现在市面上的耳机类型特别多&#xff0c;我很喜欢那种分体式的开放耳机&#xff0c;感觉这种耳机设计…

大模型微调之 在亚马逊AWS上实战LlaMA案例(十)

大模型微调之 在亚马逊AWS上实战LlaMA案例&#xff08;十&#xff09; 训练数据集格式 SageMaker JumpStart 目前支持域适应格式和指令调整格式的数据集。在本节中&#xff0c;我们指定两种格式的示例数据集。有关更多详细信息&#xff0c;请参阅附录中的数据集格式化部分。 …

Leetcode—2079. 给植物浇水【中等】

2024每日刷题&#xff08;130&#xff09; Leetcode—2079. 给植物浇水 实现代码 class Solution { public:int wateringPlants(vector<int>& plants, int capacity) {int ans 0;int step 0;int cap capacity;bool flag false;for(int i 0; i < plants.siz…