【数据结构与算法 | 基础篇】力扣232, 225

1. 力扣232 : 用栈实现队列

(1). 题

请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(pushpoppeekempty):

实现 MyQueue 类:

  • void push(int x) 将元素 x 推到队列的末尾
  • int pop() 从队列的开头移除并返回元素
  • int peek() 返回队列开头的元素
  • boolean empty() 如果队列为空,返回 true ;否则,返回 false

说明:

  • 你 只能 使用标准的栈操作 —— 也就是只有 push to toppeek/pop from topsize, 和 is empty 操作是合法的。
  • 你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。

示例 1:

输入:
["MyQueue", "push", "push", "peek", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 1, 1, false]解释:
MyQueue myQueue = new MyQueue();
myQueue.push(1); // queue is: [1]
myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
myQueue.peek(); // return 1
myQueue.pop(); // return 1, queue is [2]
myQueue.empty(); // return false

提示:

  • 1 <= x <= 9
  • 最多调用 100 次 pushpoppeek 和 empty
  • 假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)

进阶:

  • 你能否实现每个操作均摊时间复杂度为 O(1) 的队列?换句话说,执行 n 个操作的总时间复杂度为 O(n) ,即使其中一个操作可能花费较长时间。

(2). 思路

用两个栈模拟队列. 先设计两个栈,分别作输入栈,输出栈. 如果执行push操作,将元素压入输入栈. 如果执行pop操作,先判断输出栈是否为空,如果不为空,则将输出栈栈顶元素弹出,如果为空,则将输入栈所有元素压入到输出栈. peek操作同pop操作. empty判断队列是否为空,只需判断输入栈与输出栈是否同时为空. 如果同时为空,则return true.

(3). 解

class MyQueue {//声明输入栈, 输出栈private Deque<Integer> inStack;private Deque<Integer> outStack;public MyQueue() {inStack = new LinkedList<>();outStack = new LinkedList<>();}public void push(int x) {inStack.push(x);}public int pop() {//如果输出栈此时不为空, 则弹栈if(!outStack.isEmpty()) {return outStack.pop();}while(!inStack.isEmpty()){outStack.push(inStack.pop());}return outStack.pop();}public int peek() {if(!outStack.isEmpty()) {return outStack.peek();}while(!inStack.isEmpty()){outStack.push(inStack.pop());}return outStack.peek();}public boolean empty() {return inStack.isEmpty() && outStack.isEmpty();}
}/*** Your MyQueue object will be instantiated and called as such:* MyQueue obj = new MyQueue();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.peek();* boolean param_4 = obj.empty();*/

2. 力扣225 : 用队列实现栈

(1). 题

请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(pushtoppop 和 empty)。

实现 MyStack 类:

  • void push(int x) 将元素 x 压入栈顶。
  • int pop() 移除并返回栈顶元素。
  • int top() 返回栈顶元素。
  • boolean empty() 如果栈是空的,返回 true ;否则,返回 false 。

注意:

  • 你只能使用队列的标准操作 —— 也就是 push to backpeek/pop from frontsize 和 is empty 这些操作。
  • 你所使用的语言也许不支持队列。 你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。

示例:

输入:
["MyStack", "push", "push", "top", "pop", "empty"]
[[], [1], [2], [], [], []]
输出:
[null, null, null, 2, 2, false]解释:
MyStack myStack = new MyStack();
myStack.push(1);
myStack.push(2);
myStack.top(); // 返回 2
myStack.pop(); // 返回 2
myStack.empty(); // 返回 False

提示:

  • 1 <= x <= 9
  • 最多调用100 次 pushpoptop 和 empty
  • 每次调用 pop 和 top 都保证栈不为空

进阶:你能否仅用一个队列来实现栈。

(2). 思路

难崩,虽然题目说是让两个队列实现栈,但试着让栈实现栈,套个小马甲,没想到居然通过了.hhhh

(3). 解1

class MyStack {private Deque<Integer> satck;public MyStack() {satck = new LinkedList<>();}public void push(int x) {satck.push(x);}public int pop() {return satck.pop();}public int top() {return satck.peek();}public boolean empty() {return satck.isEmpty();}
}/*** Your MyStack object will be instantiated and called as such:* MyStack obj = new MyStack();* obj.push(x);* int param_2 = obj.pop();* int param_3 = obj.top();* boolean param_4 = obj.empty();*/

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

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

相关文章

dolphinscheduler standalone安装

官方文档&#xff1a;https://dolphinscheduler.apache.org/en-us/docs/3.1.3/guide/installation/standalone 1.安装&#xff08;以放在/home为例&#xff09; 下载见&#xff1a;https://download.csdn.net/download/taotao_guiwang/89311365 tar -xvzf apache-dolphinsche…

pytorch比较操作

文章目录 常用的比较操作1.torch.allclose()2.torch.argsort()3.torch.eq()4.torch.equal()5.torch.greater_equal()6.torch.gt()7.torch.isclose()8.torch.isfinite()9.torch.isif()10.torch.isposinf()11.torch.isneginf()12.torch.isnan()13.torch.kthvalue()14.torch.less_…

学习前端第四十一天(节点属性,特性和属性)

一、节点属性 1、nodeType属性&#xff0c;获取 DOM 节点类型 对于元素节点 elem.nodeType 1&#xff0c; 对于文本节点 elem.nodeType 3&#xff0c; 对于注释节点 elem.nodeType 8&#xff0c; 对于 document 对象 elem.nodeType 9&#xff0c; 2、nodeName和tagNa…

NLP技术发展和相关书籍分享

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是计算机科学领域和人工智能领域的重要研究方向之一&#xff0c;旨在探索实现人与计算机之间用自然语言进行有效交流的理论与方法。它融合了语言学、计算机科学、机器学习、数学、认知心理学等…

C++中的异常处理

文章目录 前言一、异常处理的代码实现二、异常规范总结 前言 异常处理是一种在软件开发中用于处理程序运行时错误的机制。在C中&#xff0c;异常处理的基本思想是将异常情况与正常情况进行区分&#xff0c;当异常情况发生时&#xff0c;程序不会继续执行下去&#xff0c;而是转…

外卖系统源码解读:校园外卖APP开发全攻略

外卖系统源码解读&#xff1a;校园外卖APP开发全攻略 今天&#xff0c;小编将深入解读外卖系统的源码&#xff0c;详细介绍如何开发一款功能齐全的校园外卖APP&#xff0c;帮助开发者快速上手&#xff0c;打造出高质量的外卖应用。 一、需求分析 应具备以下基本功能&#xff…

idea的project structure下project [lauguage ]()level 没有java的sdk17选项如何导入

idea的project structure下project lauguage level 没有java的sdk17选项如何导入 别导入了&#xff0c;需要升级idea版本。idea中没有project language level没有17如何添加 - CSDN文库 别听这文章瞎扯淡 2021版本就是没有&#xff0c;直接卸载升级到最新版本就可以了。没办法…

关系型数据库的三范式理解

关系型数据库的三范式&#xff08;Third Normal Form&#xff0c;3NF&#xff09;是数据库设计中的一种规范化理论&#xff0c;用于减少数据冗余和提高数据一致性。三范式是建立在第一范式&#xff08;1NF&#xff09;和第二范式&#xff08;2NF&#xff09;的基础上的。以下是…

MySQL之创建高性能的索引(四)

创建高性能的索引 空间数据索引(R-Tree) MyISAM表支持空间索引&#xff0c;可以用作地理数据存储。和B-Tree索引不同&#xff0c;这类索引无须前缀查询。空间索引会从所有维度来索引数据。查询时&#xff0c;可以有效地使用任意维度来组合查询。必须使用MySQL的GIS相关函数如…

AcWing 2568:树链剖分 ← 线段树+DFS

【题目来源】https://www.acwing.com/problem/content/2570/【题目描述】 给定一棵树&#xff0c;树中包含 n 个节点&#xff08;编号 1∼n&#xff09;&#xff0c;其中第 i 个节点的权值为 ai。 初始时&#xff0c;1 号节点为树的根节点。 现在要对该树进行 m 次操作&#xf…

5.28总结

HTML 三剑客&#xff1a; JS CSS HTML 入门实例 新建一个test.html文件&#xff0c;内容如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

央视网视频下载和花屏问题处理

央视网(www.cctv.com)视频下载往往是花屏的&#xff0c;如何处理呢&#xff1f; 如果您是IT技术开发者&#xff0c;那么您可以通过下面步骤自己实现。 用chrome浏览器&#xff0c;F2打开开发者工具&#xff0c;找到当前页面的network 然后找一个接口&#xff1a;https://vdn.a…

【Python-基础】字典合集

遍历所有键 # vis_params{vis_level: -1, line_thickness: 500} for key in vis_params.keys():注&#xff1a; vis_params &#xff1a; 字典数据 未完待续…

Android UI:ViewTree: 监听

文章目录 涉及设计模式 ​​​​​​​​​​​​​​观察者模式+策略模式API源码分析总结涉及设计模式 观察者模式+策略模式 被观察者:ViewTree ViewTree持有一个观察器ViewTreeObserver 系统在ViewRootImpl和View的相关方法中调用ViewTreeObserver上的注册的监听器的方法,…

文生图模型演进:AE、VAE、VQ-VAE、VQ-GAN、DALL-E 等 8 模型

节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 合集&#x…

OC IOS 文件解压缩预览

热很。。热很。。。。夏天的城市只有热浪没有情怀。。。 来吧&#xff0c;come on。。。 引用第三方库&#xff1a; pod SSZipArchive 开发实现&#xff1a; 一、控制器实现 头文件控制器定义&#xff1a; // // ZipRarViewController.h // // Created by carbonzhao on 2…

JavaScript与版本控制:编译时光机的双重奏——git仓库

JavaScript与版本控制&#xff1a;编译时光机的双重奏——git仓库 JavaScript&#xff1a;代码的魔法棒版本控制&#xff1a;时光机的钥匙案例一&#xff1a;初始化Git仓库与基本操作初始化仓库添加文件至暂存区提交更改分支管理 案例二&#xff1a;JavaScript项目中的Gitignor…

OTFS系统建模、通信性能分析、信道估计、模糊函数【附MATLAB代码】

文献来源&#xff1a;​微信公众号&#xff1a;EW Frontier OTFS简介 OTFS信道估计 % Clear command window, workspace variables, and close all figures clc; clear all; close all; ​ % Define Eb values in dB EbdB -10:2:10; ​ % Convert Eb values from dB to lin…

【测评】香橙派 AIpro上手初体验

AI毋庸置疑是近年来&#xff0c;热度最高的技术之一&#xff0c;作为一名工程师拥抱新技术的同时不可或缺的需要一块强悍的开发板&#xff0c;香橙派 AIpro除了拥有好看的皮囊之外&#xff0c;还拥有一个有趣且充满魅力的灵魂。作为一位长期活跃在嵌入式开发领域的工程师&#…

OrangePi AIpro (8T)使用体验,性能测试报告

前言 这段时间收到了CSDN和香橙派的邀请&#xff0c;对OrangePi AIpro进行体验测评&#xff0c;在此感谢CSDN对我的信任&#xff0c;也感谢香橙派能做出如此优秀的开发板。 可喜可贺&#xff0c;周三晚上我收到了官方寄出的OrangePi AIpro。出于对国产芯片的好奇&#xff0c…