每日一题之用两个栈实现队列

这篇具有很好参考价值的文章主要介绍了每日一题之用两个栈实现队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

用两个栈实现队列

题目:用两个栈实现队列

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

参考牛客的解题思路:
将 stack1 倒序写入 stack2 ,然后使用 python 中的 pop() 函数对 stack2 输出。文章来源地址https://www.toymoban.com/news/detail-649870.html

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        # write code here
        self.stack1.append(node)

    def pop(self):
        # return xx
        # 如果stack2不为空,直接将其出栈
        if self.stack2:
            return self.stack2.pop()
        else:
            # 栈是后进先出
            # 将stack1的元素倒序入stack2,再将stack2出栈
            for i in range(len(self.stack1)):
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()

到了这里,关于每日一题之用两个栈实现队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 04-26 每日一题 1031. 两个非重叠子数组的最大和 学习反思

    1031. 两个非重叠子数组的最大和 考虑一个问题,如何求得数组中两个数的最大和。 可以固定一个数,然后向右遍历 如下,可以求得目标数组中两个数的最大和为 15 实现过程,如上图所示过程,右指针在移动过程中是跟随数组下标的 左边部分的元素需要维护一个最大值,所

    2023年04月27日
    浏览(42)
  • 每日一题411数组中两个数的最大异或值(哈希表、前缀树:实现前缀树)

    LeetCode题目:https://leetcode.cn/problems/maximum-xor-of-two-numbers-in-an-array/   本题使用哈希表方法主要运用到一个定理:异或满足算法交换律。即如果a^b = c,那么必然 b ^ c = a。且数组中的元素都在 [ 0 , 2 31 ) [0,2^{31}) [ 0 , 2 31 ) ,因此可以确定数值的最高位是30位。   因此,可以假设

    2024年02月05日
    浏览(42)
  • Leetcode每日一题——“合并两个有序数组”

    各位CSDN的uu们你们好呀,又到小雅兰的愉快题解时候啦,今天,我们的题目内容是合并两个有序数组,下面,让我们进入合并两个有序数组的世界吧 示例 1: 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 输出:[1,2,2,3,5,6] 解释:需要合并 [1,2,3] 和 [2,5,6] 。 合并结果是 [ 1,2

    2023年04月24日
    浏览(67)
  • Leetcode-每日一题【1669.合并两个链表】

    给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。 请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。 下图中蓝色边和节点展示了操作后的结果:   请你返回结果链表的头指针。 示例 1: 输入: list1 = [0,1,2,3,4,5], a = 3, b

    2024年02月13日
    浏览(50)
  • 力扣每日一题88:合并两个有序数组

    给你两个按  非递减顺序  排列的整数数组  nums1   和  nums2 ,另有两个整数  m  和  n  ,分别表示  nums1  和  nums2  中的元素数目。 请你  合并   nums2   到  nums1  中,使合并后的数组同样按  非递减顺序  排列。 注意: 最终,合并后数组不应由函数返回,而是存储在

    2024年02月07日
    浏览(47)
  • C语言每日一题(22)合并两个有序数组

    力扣网 88. 合并两个有序数组 给你两个按  非递减顺序  排列的整数数组  nums1   和  nums2 ,另有两个整数  m  和  n  ,分别表示  nums1  和  nums2  中的元素数目。 请你  合并   nums2   到  nums1  中,使合并后的数组同样按  非递减顺序  排列。 注意: 最终,合并后数组

    2024年02月08日
    浏览(43)
  • 每日一题之两个字符串的删除操作

    题目链接 给定两个单词  word1  和  word2  ,返回使得  word1  和   word2  ** 相同 所需的 最小步数 。 每步  可以删除任意一个字符串中的一个字符。 示例 1: 示例  2: 提示: 1 = word1.length, word2.length = 500 word1  和  word2  只包含小写英文字母 我们可以定义一个二维数组 dp ,

    2024年02月15日
    浏览(40)
  • 【力扣每日一题】2023.8.13 合并两个有序数组

    目录 题目: 示例: 分析: 代码: 题目给我们两个升序数组,让我们合并它们,要求合并之后仍然是升序,并且这个合并操作是在数组1原地修改的。数组1的有效数据长度为 m ,而数组1的长度为 m + n,n 是数组2的有效数据长度以及数组的长度。 比较直观容易想到的做法就是

    2024年02月12日
    浏览(41)
  • 2023-08-13 LeetCode每日一题(合并两个有序数组)

    点击跳转到题目位置 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 **注意:**最终,合并后数组不应由函数返回,而是存储在数组 num

    2024年02月13日
    浏览(60)
  • 【每日一题】数组中两个数的最大异或值

    【哈希集合】【位运算-异或和】【数组】【2023-11-04】 421. 数组中两个数的最大异或值 找出数组中两个数的最大异或结果。 一看数据量达到了 1 0 5 10^5 1 0 5 ,那时间复杂度为 O ( n 2 ) O(n^2) O ( n 2 ) 的方法必定超时,因此需要去找 O ( n l o g n ) O(nlogn) O ( n l o g n ) 或者 O ( n ) O(n)

    2024年02月05日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包