力扣 225 用隊列實現棧 記錄

題目描述

請你僅使用兩個隊列實現一個后入先出(LIFO)的棧,并支持普通棧的全部四種操作(push、top、pop 和 empty)。實現 MyStack 類:
void push(int x) 將元素 x 壓入棧頂。
int pop() 移除并返回棧頂元素。
int top() 返回棧頂元素。
boolean empty() 如果棧是空的,返回 true ;否則,返回 false 。注意:
你只能使用隊列的標準操作 —— 也就是 push to back、peek/pop from front、size 和 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

思路

用單個隊列實現了棧的行為。棧是一種后入先出(LIFO)的數據結構,通常支持 push、pop、top 和 empty 操作。在這個實現中,通過對隊列的操作,模擬了棧的行為。

類定義和構造函數

class MyStack {
public:std::queue<int> que;MyStack() {}

MyStack 類中定義了一個公有成員 que,類型為 std::queue,用于存儲棧中的元素。
構造函數 MyStack() 是一個空構造函數,不進行任何操作。隊列 que 的初始化由其默認構造函數處理。

push()

    void push(int x) {que.push(x);}

push(int x) 方法直接將元素 x 加入隊列的尾部。在棧的行為中,這將是最后一個被彈出的元素,符合后入先出的特性。

pop()

    int pop() {for(int i = 0; i < que.size() - 1; i++){que.push(que.front());que.pop();}int result = que.front();que.pop();return result;}

pop() 方法移除并返回棧頂元素。為了達到這個目的,首先將隊列前面的元素(除最后一個元素外)依次出隊并重新入隊到隊列尾部。這樣,原本的最后一個元素(棧頂元素)就移到了隊列的前端,可以通過 que.pop() 直接移除并返回。
循環 for(int i = 0; i < que.size() - 1; i++) 確保除了最后一個元素,其他所有元素都被重新排列。

top()

    int top() {return que.back();}

top() 方法返回棧頂元素的值,但不移除它。由于隊列的 back() 方法可以直接訪問隊尾元素,這里的隊尾元素正是最后入棧的元素,因此可以直接返回。

empty()

    bool empty() {return que.empty();}

empty() 方法檢查棧(隊列)是否為空。如果隊列為空,則棧也為空,返回 true;否則返回 false。

完整代碼

#include<stack>
#include<queue>
#include<iostream>class MyStack {
public:std::queue<int> que;MyStack() {}void push(int x) {que.push(x);}int pop() {for(int i = 0; i < que.size() - 1; i++){que.push(que.front());que.pop();}int result = que.front();que.pop();return result;}int top() {return que.back();}bool empty() {return que.empty();}
};int main() {MyStack myStack;myStack.push(1);myStack.push(2);std::cout << "Top: " << myStack.top() << std::endl;  // 返回 2std::cout << "Pop: " << myStack.pop() << std::endl;  // 返回 2std::cout << "Empty: " << (myStack.empty() ? "true" : "false") << std::endl;  // 返回 falsereturn 0;
}

時間復雜度: pop為O(n),其他為O(1)
空間復雜度: O(n)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41369.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41369.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41369.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 引用做函數返回值

作用&#xff1a;引用是可以作為函數的返回值存在的 注意&#xff1a;不要返回局部變量引用 用法&#xff1a;函數調用作為左值 示例&#xff1a; 運行結果&#xff1a;

程序員熬夜看歐洲杯被“凍住”,呼吸困難……

2024歐洲杯接近尾聲&#xff0c;更是激發球迷興趣。由于時差關系&#xff0c;很多球迷熬夜看球&#xff0c;啤酒、宵夜成了標配。然而&#xff0c;在這份歡樂背后&#xff0c;也隱藏著健康風險。 日前&#xff0c;浙江杭州29歲的程序員單先生熬夜與朋友看完球賽后開車回家&…

零基礎STM32單片機編程入門(九)IIC總線詳解及EEPROM實戰含源碼視頻

文章目錄 一.概要二.IIC總線基本概念1.總體特征2.通訊流程 三.EEPROM介紹1.M24C08基本介紹2.向M24C08寫一個字節時序圖3.從M24C08讀一個字節時序圖 四.GPIO模擬IIC驅動M24C08讀寫五.CubeMX工程源代碼下載六.講解視頻鏈接地址七.小結 一.概要 IIC(Inter&#xff0d;Integrated …

黑馬|最新AI+若依 |初識項目

本章主要內容是&#xff1a; 1.快速搭建了若依前后端項目在本地 2.實現了單表的增刪改查快速生成 文章目錄 介紹1.若依介紹2.若依的不同版本3.項目運行環境 初始化前后端項目1.下載若依項目2.初始化后端a.把表導入到數據庫中b.更改application.yml文件 3.初始化前端a.安裝依賴…

基于LoFTR_TRT項目實現LoFTR模型的trt推理與onnx推理,3060顯卡下320圖像30ms一組圖

本博文主要記錄了使用LoFTR_TRT項目將LoFTR模型導出為onnx模型&#xff0c;然后將onnx模型轉化為trt模型。并分析了LoFTR_TRT與LoFTR的基本代碼差異&#xff0c;但從最后圖片效果來看是與官網demo基本一致的&#xff0c;具體可以查看上一篇博客記錄。最后記錄了onnx模型的使用【…

WebAssembly場景及未來

引言 從前面的文章中&#xff0c;我們已經了解了 WebAssembly&#xff08;WASM&#xff09; 的基本知識&#xff0c;演進歷程&#xff0c;以及簡單的使用方法。通過全面了解了WebAssembly的設計初衷和優勢&#xff0c;我們接下來要知道在什么樣的場景中我們會使用 WASM 呢&…

在門店里造綠色氧吧!康養行業也這么卷了?

拼啥不如拼健康&#xff0c;現在的人算是活明白了&#xff0c;不但中老年人這樣想&#xff0c;年輕人也這樣干。你可能不知道&#xff0c;現在眾多健康養生門店&#xff0c;逐漸成了年輕人“組團養生”的好去處&#xff0c;也是他們吃喝玩樂之外的新興消費趨勢。 而在看得見的…

原理圖設計工作平臺:capture和capture CIS的區別在于有沒有CIS模塊

1環境:design entry CIS 2.參數設置命令options——preference&#xff08;7個選項卡colors/print&#xff0c;grid display&#xff0c;miscellaneous&#xff0c;pan and zoom&#xff0c;select&#xff0c;text editor和board simulation&#xff09; 1)顏色設置colors/p…

應急響應--網站(web)入侵篡改指南

免責聲明:本文... 目錄 被入侵常見現象: 首要任務&#xff1a; 分析思路&#xff1a; 演示案例: IIS&.NET-注入-基于時間配合日志分析 Apache&PHP-漏洞-基于漏洞配合日志分析 Tomcat&JSP-弱口令-基于后門配合日志分析 (推薦) Webshell 查殺-常規后門&…

linux內核定時器

文章目錄 一、jiffies定時器1.1 工作原理1.2 timer_list結構體1.3 相關接口1.3.1 初始化和啟動定時器1.3.2 修改定時器1.3.3 刪除定時器1.3.4 jiffies相關接口 二、高精度定時器2.1 hrtimer結構體2.2 相關接口2.2.1 初始化和啟動定時器2.2.2 取消定時器2.2.3 通過定時器實現周期…

shell-awk語法整理

shell-awk語法整理 前言基本語法內置變量1. $02. NF3. NR4. FS5. RS6. OFS7. ORS8. FILENAME9. FNR10. ARGV11. ENVIRON12. IGNORECASE13. RSTART 和 RLENGTH示例解釋 內置函數循環語句&#xff08;后面的;可不加&#xff09;條件語句高級特性示例 特殊模式BEGINEND組合示例BEG…

R語言實戰—圓形樹狀圖

話不多說&#xff0c;先看最終效果&#xff1a; 圓形樹狀圖是樹狀圖的一個變型&#xff0c;其實都是層次聚類。 接下來看代碼步驟&#xff1a; 首先要先安裝兩個包&#xff1a; install.packages("ggtree") install.packages("readxl") 咱就別問問什么…

29、php實現和為S的兩個數字(含源碼)

題目&#xff1a;php 實現 和為S的兩個數字 描述&#xff1a; 輸入一個遞增排序的數組和一個數字S&#xff0c;在數組中查找兩個數&#xff0c; 是的他們的和正好是S&#xff0c;如果有多對數字的和等于S&#xff0c;輸出兩個數的乘積最小的。 輸出描述&#xff1a; 對應每個測…

go zero入門

一、goctl安裝 goctl 是 go-zero 的內置腳手架&#xff0c;可以一鍵生成代碼、文檔、部署 k8s yaml、dockerfile 等。 # Go 1.16 及以后版本 go install github.com/zeromicro/go-zero/tools/goctllatest檢查是否安裝成功 $ goctl -v goctl version 1.6.6 darwin/amd64vscod…

vue2響應式原理+模擬實現v-model

效果 簡述原理 配置對象傳入vue實例 模板解析&#xff0c;遍歷出所有文本節點&#xff0c;利用正則替換插值表達式為真實數據 data數據代理給vue實例&#xff0c;以后通過this.xxx訪問 給每個dom節點增加觀察者實例&#xff0c;由觀察者群組管理&#xff0c;內部每一個鍵值…

sqlite 數據庫 介紹

文章目錄 前言一、什么是 SQLite &#xff1f;二、語法三、SQLite 場景四、磁盤文件 前言 下載 目前已經出到了&#xff0c; Version 3.46.0 SQLite&#xff0c;是一款輕型的數據庫&#xff0c;是遵守ACID的關系型數據庫管理系統&#xff0c;它包含在一個相對小的C庫中。它是…

VMware虛擬機配置橋接網絡

轉載&#xff1a;虛擬機橋接網絡配置 一、VMware三種網絡連接方式 VMware提供了三種網絡連接方式&#xff0c;VMnet0, VMnet1, Vmnet8&#xff0c;分別代表橋接&#xff0c;Host-only及NAT模式。在VMware的編輯-虛擬網絡編輯器可看到對應三種連接方式的設置&#xff08;如下圖…

美好生活的 100 條建議

簡介 一些簡潔明了的人生建議&#xff0c;易于理解&#xff0c;并且能夠為日常生活中的各個方面提供實用的指導。 財富 (Possessions) 1. If you want to find out about people’s opinions on a product, google \reddit. You’ll get real people arguing, as compared t…

SpringBoot2.2.6使用spring-boot-validation讀取不到自定義配置文件中的屬性

SpringBoot2.2.6沒有做message.properties文件中屬性的自動讀取配置。解決方法有兩種&#xff1a; 1. 升級springboot版本到2.6.x以上 2. 在現有springboot版本的基礎上添加以下自定義配置&#xff1a; Configuration public class RequestParamValidationConfig implements…

學習筆記——交通安全分析12

目錄 前言 當天學習筆記整理 4信控交叉口交通安全分析 結束語 前言 #隨著上一輪SPSS學習完成之后&#xff0c;本人又開始了新教材《交通安全分析》的學習 #整理過程不易&#xff0c;喜歡UP就點個免費的關注趴 #本期內容接上一期11筆記 當天學習筆記整理 4信控交叉口交…