【劍指offer】棧 隊列

📁?JZ9?用兩個棧實現隊列

? ? ? ? 一個棧in用作進元素,一個棧out用于出元素。當棧out沒有元素時,從in棧獲取數據,根據棧的特性,棧out的top元素一定是先進入的元素,因此當棧out使用pop操作時,一定時滿足隊列的特性的。

class Solution
{
public:void push(int node) {s1.push(node);}int pop() {if(s2.empty()){while(!s1.empty()){int top = s1.top();s1.pop();s2.push(top);}}int top = s2.top();s2.pop();return top;}private:stack<int> s1;stack<int> s2;
};

📁?JZ30?包含min函數的棧

? ? ? ? 一個棧s1用于存放所有元素,一個棧s2用于存放最小元素以及在入棧之前的那些最小元素。

class Solution {
public:void push(int value) {s1.push(value);if(s2.empty() || value <= s2.top())s2.push(value);}void pop() {if (s1.top() == s2.top()){s1.pop();s2.pop();}else {s1.pop();}}int top() {return s1.top();}int min() {return s2.top();}
private:stack<int> s1;stack<int> s2;
};

📁?JZ31?棧的壓入、彈出序列

? ? ? ? 使用stack模擬進棧和出棧,如果能模擬出來返回true,不能返回false。

class Solution {
public:bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {// write code herestack<int> s;int i=0;for(auto& e : pushV){s.push(e);while(!s.empty() && s.top() == popV[i]){s.pop();++i;}}return s.empty();}
};

📁?JZ73?翻轉單詞序列

? ? ? ? 以空格為分隔符,取出每一個單詞放入棧中,根據棧的性質出棧完成單詞翻轉。

#include <string>
class Solution {
public:string ReverseSentence(string str) {stack<string> s;int i=0,j=0;while(i < str.length()){j = i;while(j < str.length() && str[j] != ' ')++j;s.push(str.substr(i,j-i));i = j+1;}string newStr;while(!s.empty()){newStr += s.top();s.pop();if(!s.empty())newStr += " ";}return newStr;}
};

📁 JZ59?滑動窗口的最大值

📁 JZ59?滑動窗口的最大值

? ? ? ? 根據性質,得出當有一個較大值進入窗口時,所有比他小的元素不影響結果,因此我們就可以使用一個雙端隊列來完成:當一個較大值進入時,移除所有比它小的之前進入的元素。

? ? ? ? 雙端隊列的隊頭就是該窗口內的最大值下標。為什么這里采用下標呢,因為為了方便處理判斷該元素是否還在窗口內。

vector<int> maxInWindows(vector<int>& num, int size) {vector<int> ret;deque<int> dq;if(num.size() < size || size <= 0)return ret;//找第一個窗口for(int i = 0 ; i < size ; ++i){//插入新元素時, 去除比他小的之前的元素(下標)while(!dq.empty() && num[dq.back()] < num[i])dq.pop_back();dq.push_back(i);}           for(int i = size; i < num.size() ; ++i){ret.push_back(num[dq.front()]);//窗口后移, 窗口之前的元素去掉while(!dq.empty() && dq.front() < (i-size+1))dq.pop_front();//插入新元素時, 去除比他小的之前的元素while(!dq.empty() && num[dq.back()] < num[i])dq.pop_back();dq.push_back(i);}ret.push_back(num[dq.front()]);return ret;}

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

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

相關文章

GoView 低代碼數據可視化

純前端 分支&#xff1a; master &#x1f47b; 攜帶 后端 請求分支: master-fetch &#x1f4da; GoView 文檔 地址&#xff1a;https://www.mtruning.club/ 項目純前端-Demo 地址&#xff1a;https://vue.mtruning.club/ 項目帶后端-Demo 地址&#xff1a;https://demo.mtrun…

Spring Boot返回前端Long型丟失精度 后兩位 變成00

文章目錄一、前言二、問題描述2.1、問題背景2.2、問題示例三、解決方法3.1、將ID轉換為字符串3.2、使用JsonSerialize注解3.3、使用JsonFormat注解一、前言 在后端開發中&#xff0c;我們經常會遇到需要將ID作為標識符傳遞給前端的情況。當ID為long類型時&#xff0c;如果該ID…

計算機網絡實驗——無線局域網安全實驗

實驗1. WEP和WPA2-PSK實驗一、實驗目的驗證AP和終端與實現WEP安全機制相關的參數的配置過程。驗證AP和終端與實現WPA2-PSK安全機制相關的參數的配置過程。驗證終端與AP之間建立關聯的過程。驗證關閉端口的重新開啟過程。驗證屬于不同BSS的終端之間的數據傳輸過程。二、實驗任務…

【從零開始學Dify】大模型應用開發平臺Dify本地化部署

目錄Dify一、本地化部署1、安裝docker2、安裝Dify&#xff08;1&#xff09;拉取代碼到本地&#xff08;2&#xff09;docker部署&#xff08;3&#xff09;查看服務狀態&#xff08;4&#xff09;web端部署&#xff08;5&#xff09;登錄二、可能會出現的問題&#xff08;1&am…

LVGL應用和部署(和物理按鍵交互)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】屏幕除了顯示部分&#xff0c;還要去和其他外設進行交互&#xff0c;這是非常重要的一個處理方法。我們知道&#xff0c;不管是mcu&#xff0c;還是…

限流式保護器如何筑牢無人駕駛汽車充電站的安全防線

摘要&#xff1a; 隨著新能源汽車&#xff0c;尤其是無人駕駛車隊的快速發展&#xff0c;充電設施的安全可靠性至關重要。交流充電樁&#xff08;俗稱“慢充樁”&#xff09;作為重要的充電基礎設施&#xff0c;其末端回路的安全保護需滿足國家標準GB51348-2019的嚴格要求&…

專題:2025母嬰行業洞察報告|附60+份報告PDF匯總下載

原文鏈接&#xff1a;https://tecdat.cn/?p42908 全球母嬰市場正經歷結構性增長&#xff0c;一面是歐美成熟市場的品質消費升級&#xff0c;一面是東南亞、中東等新興市場的人口紅利釋放。2020至2026年&#xff0c;全球母嬰市場規模將從1859億美元增至3084億美元&#xff0c;年…

從零搭建多商戶商城系統源碼:技術棧、數據庫設計與接口規劃詳解

如今&#xff0c;多商戶商城系統已成為傳統零售轉型與新型電商平臺構建的關鍵利器。無論是打造像某寶、某東這樣的綜合型平臺&#xff0c;還是服務于垂直行業的獨立電商&#xff0c;一套高效、可擴展的多商戶商城系統源碼&#xff0c;往往決定著平臺的成敗。 今天&#xff0c;小…

在Docker中運行macOS的超方便體驗!

在數字化和開發人員快速迭代的今日&#xff0c;擁有一個便捷、高效的開發環境成為每個開發者夢寐以求的事情。特別是在需要操作多個系統、開發跨平臺應用時&#xff0c;調試和測試的便利性顯得尤為重要。今天為大家介紹的這款開源項目&#xff0c;正是一個解決此類問題的利器—…

Kettle導入Excel文件進數據庫時,數值發生錯誤的一種原因

1、問題描述及原因 在使用kettle讀取Excel文件、并導入數據庫時&#xff0c;需要讀取Excel中的數值、日期(或日期時間、時間)、文本這三種類型的列進來&#xff0c;發現讀取其中的數值時&#xff0c;讀取的數字就不對。 經調查&#xff0c;原因是&#xff0c;在“導出數據為E…

Windows安裝DevEco Studio

1. 概述 DevEco Studio是華為基于IDEA Community開源工具開發的一站式HarmonyOS應用及元服務開發平臺&#xff0c;為開發者提供代碼開發、編譯構建以及調測等功能 2. 運行環境要求 操作系統&#xff1a;Windows10 64位、Windows11 64位 內存&#xff1a;16GB及以上 硬盤&…

PLC框架-1.3.2 報文750控制匯川伺服的轉矩上下限

本文介紹1200PLC如何使用750報文設定伺服轉矩的上下限。 750號報文 PLC---->伺服 (控制) 伺服--->PLC (狀態) PZD1

Redis知識集合---思維導圖(持續更新中)

一、Redis中常見的數據類型有哪些&#xff1f;二、Redis為什么這么快&#xff1f;三、為什么Redis設計為單線程&#xff1f;6.0版本為何引入多線程&#xff1f;四、

mac m1安裝大模型工具vllm

1 更新系統環境 參考vllm官網文檔&#xff0c;vllm對apple m1平臺mac os, xcoder, clang有如下要求 OS: macOS Sonoma or later SDK: XCode 15.4 or later with Command Line Tools Compiler: Apple Clang > 15.0.0 在App Store更新macOS和XCoder&#xff0c;依據XCoder版本…

解鎖localtime:使用技巧與避坑指南

目錄 一、引言 1.1 背景與目的 1.2 localtime 函數簡介 二、localtime 函數詳解 2.1 函數原型與參數 2.2 返回值與 tm 結構體 2.3 基本使用示例 三、localtime 函數的缺陷剖析 3.1 多次調用同一共享區間導致錯誤 3.1.1 問題現象展示 3.1.2 原因深入分析 3.1.3 實際影…

鄭州機械設計研究所 -PHM產品序列概覽

1.設備狀態監測系統 動態信號監測很像是三個獨立通道&#xff0c;振動&#xff0c;轉速&#xff0c;然后高頻的某個頻帶。或者是同一個振動信號做的低頻和高頻兩個帶通&#xff0c;時域和頻域組圖。實時檢測&#xff0c;很明顯是24個時 -頻指標。 動態分析看起來像趨勢圖。 2.…

《棒壘球知道》奧運會的吉祥物是什么·棒球1號位

Olympic Mascots & Baseball/Softball Games History ?&#xff08;奧運吉祥物與棒壘球賽事全科普&#xff09;1984洛杉磯奧運會 / Los Angeles 1984Mascot: Sam the Eagle&#xff08;山姆鷹&#xff09;美國精神象征&#xff0c;紅白藍配色超吸睛&#xff01;Baseball/S…

【提高篇-基礎知識與編程環境:1、Linux系統終端中常用的文件與目錄操作命令】

Linux終端提供了豐富的命令來操作文件和目錄&#xff0c;以下簡單介紹一些常用的命令&#xff1a; 一、目錄操作命令 pwd - 顯示當前工作目錄 pwd #輸出當前所在目錄的絕對路徑 cd - 切換目錄 cd /path/to/directory # 切換到指定目錄 cd … # …

前端性能優化:從之理論到實踐的破局道

&#x1f680; 前端性能優化&#xff1a;從之理論到實踐的破局道 摘要&#xff1a;本文針對首屏加載、渲染卡頓等核心痛點&#xff0c;結合當前主流技術棧給出可落地的優化方案一、為什么你的頁面"又慢又卡"&#xff1f; 用戶真實體驗數據&#xff1a; 加載時間超過3…

2025年最新Python+Playwright自動化測試- 隱藏元素定位與操作

1.簡介 對于前端隱藏元素&#xff0c;一直是自動化定位元素的隱形殺手&#xff0c;讓人防不勝防。腳本跑到隱藏元素時位置時報各種各樣的錯誤&#xff0c;可是這種隱藏的下拉菜單又沒有辦法避免&#xff0c;所以非常頭痛&#xff0c;這一篇只為交流隱藏元素自動化定位處理方法以…