每日兩題 / 20. 有效的括號 155. 最小棧(LeetCode熱題100)

20. 有效的括號 - 力扣(LeetCode)
image.png

遇到左括號入棧
遇到右括號判斷棧頂是否為匹配的左括號
最后判斷棧是否為空

func isValid(s string) bool {var stk []runefor _, value := range s {if value == '(' || value == '{' || value == '[' {stk = append(stk, value)} else if (len(stk) == 0) {return false } else {topchar := stk[len(stk) - 1]stk = stk[:len(stk) - 1]if topchar == '(' && value != ')' {return false } else if topchar == '{' && value != '}' {return false } else if topchar == '[' && value != ']' {return false }}}return len(stk) == 0
}

155. 最小棧 - 力扣(LeetCode)
image.png

要在 O ( 1 ) O(1) O(1)的時間找出最小數,一定需要額外的空間保存信息,這里使用一個輔助棧維護額外的信息
根據棧的先進后出性質,push一個數后,如果該數大于最小數,那么之后獲取的最小數一定不是該數,所以無需額外記錄該大數的信息。向輔助棧push當前最小數(輔助棧的棧頂)
如果該數小于最小數,那么之后獲取的最小數就是該數,需要額外記錄該數的信息。向輔助棧push該數
pop操作時,同時pop兩個棧的棧頂

type MinStack struct {stk []intmin_stk []int 
}func Constructor() MinStack {return MinStack{stk: []int{},min_stk: []int{},}
}func (this *MinStack) Push(val int)  {this.stk = append(this.stk, val) if len(this.min_stk) == 0 {this.min_stk = append(this.min_stk, val)} else if val > this.min_stk[len(this.min_stk) - 1] {this.min_stk = append(this.min_stk, this.min_stk[len(this.min_stk) - 1])} else {this.min_stk = append(this.min_stk, val)}
}func (this *MinStack) Pop()  {this.stk = this.stk[:len(this.stk) - 1]this.min_stk = this.min_stk[:len(this.min_stk) - 1]
}func (this *MinStack) Top() int {return this.stk[len(this.stk) - 1]
}func (this *MinStack) GetMin() int {return this.min_stk[len(this.min_stk) - 1]
}/*** Your MinStack object will be instantiated and called as such:* obj := Constructor();* obj.Push(val);* obj.Pop();* param_3 := obj.Top();* param_4 := obj.GetMin();*/

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

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

相關文章

阿里巴巴圖標庫iconfont的使用方式

文章目錄 什么是 iconfong創建一個自己的項目如何使用Unicode 使用方法Font class 使用方式Symbol 使用方式還有一種使用方式 在線鏈接(不推薦,但可用于測試) 什么是 iconfong Iconfont 是一種圖標字體服務。它將各種圖標設計轉換為字體格式…

數據庫的約束與索引

數據庫的約束與索引 文章目錄 數據庫的約束與索引一、約束1、定義2、主鍵索引3、唯一約束4、非空約束5、外鍵約束 二、索引1、定義2、主鍵索引3、唯一索引4、普通索引5、全文索引 三、深入索引面試題(一)面試題(二)面試題&#xf…

【設計模式】行為型-狀態模式

在變幻的時光中,狀態如詩篇般細膩流轉。 文章目錄 一、可調節的燈光二、狀態模式三、狀態模式的核心組件四、運用狀態模式五、狀態模式的應用場景六、小結推薦閱讀 一、可調節的燈光 場景假設:我們有一個電燈,它可以被打開和關閉。用戶可以…

snap和apt的區別簡單了解

Linux中沒有tree命令的時候提示安裝的時候出現了兩個命令,簡單看了看兩者有何區別(一般用apt就可以了): sudo snap install tree 和 sudo apt install tree 這兩個命令都是用來安裝 tree 命令行工具的,但它們使用的是不…

在線教育平臺,easyexcel使用案例

控制器 因為如何想要在讀數據的時候操作數據庫,就必須使用構造方法傳dao 或者service,因為這個不歸spring管理,不能自動注入,所以參數里需要傳遞service 或者 dao AutowiredIEduSubjectService subjectService;添加課程分類的方法…

Anaconda學習常見問題匯總

問題1:Fatal error in launcher: Unable to create process using ‘“d:\anaconda\isntall\envs\learn1\python.exe 在進行anaconda學習時,在控制臺輸入:pip list想要查看環境里的內容時發生錯誤: Fatal error in launcher: Un…

個人博客|PHP源碼|支持多國語言切換

一. 前言 今天小編給大家帶來了一款可學習,可商用的,支持多國語言的個人博客網站源碼,支持二開,無加密。此博客相當簡潔,也適合海外。詳細界面和功能見下面視頻演示。 如果您正好有此需求源碼,請聯系小編…

軟件資產管理系統:提升企業軟件資產透明度與合規性的終極解決方案!

在當今數字化轉型浪潮中,企業軟件資產管理的重要性日益凸顯。然而,傳統的手工管理方式往往效率低下,難以應對快速變化的軟件環境。SmartLic軟件資產管理系統應運而生,它以先進的技術手段,為企業提供全面的軟件資產管理…

開源自動化熱鍵映射工具autohotkey十大用法及精選腳本

AutoHotkey(AHK)是一款功能強大的熱鍵腳本語言工具,它允許用戶通過編寫腳本來自動化鍵盤、鼠標等設備的操作,從而極大地提高工作效率。以下是AutoHotkey的十大經典用法,這些用法不僅解放了用戶的雙手,還展示…

程序化交易廣告及其應用

什么是程序化交易廣告? 程序化交易廣告是以實時競價技術即RTB(real-time bidding)為核心的廣告交易方式。說到這里,你可能會有疑問:像百度搜索關鍵詞廣告還有百度網盟的廣告,不也是CPC實時競價的嗎&#x…

MDX的魔法:探索SQL Server中的多維表達式

📊 MDX的魔法:探索SQL Server中的多維表達式 在商業智能和數據分析領域,SQL Server提供了一種強大的工具來處理多維數據集,這就是多維表達式(Multidimensional Expressions,簡稱MDX)。MDX是一種…

論文學習_UVSCAN: Detecting Third-Party Component Usage Violations in IoT Firmware

論文名稱發表時間發表期刊期刊等級研究單位 Understanding the Security Risks Introduced by Third-Party Components in IoT Firmware 2024年IEEE TDSCCCF A佐治亞理工學院 1. 引言 研究背景:物聯網(IoT)已經無處不在,為我們…

HQChart報價列表高級應用教程7-走勢列數據對接

HQChart報價列表高級應用教程7-走勢列數據對接 走勢列小程序效果圖PC效果圖HQChart代碼地址走勢列類型配置走勢列數據格式示例走勢列 單獨使用一列顯示每個股票的走勢圖 小程序效果圖 PC效果圖 HQChart代碼地址 地址:github.com/jones2000/HQChart 走勢列類型 REPORT_COL…

[工業網絡] 模型建立

普渡大學ICS參考模型 普渡企業參考架構(PERA)是由西奧多J威廉姆斯(Theodore J. Williams)和普渡大學計算機集成制造工業大學聯盟的成員在1990年代開發的企業架構參考模型。該模型被ISA-99(現為ISA/IEC 62443&#xff…

使用EndNote在Word中插入參考文獻,并編輯參考文獻樣式方法

一、背景 在準備中期報告時,學校給的是Word模板,習慣了Latex排版和添加參考文獻的便利后,真不想用word寫東西。 之前投《機器人》期刊(被拒了)和準備開題的時候也是用word寫的,當時為方便添加參考文獻和定…

MyBatis 分頁插件 PageHelper 簡介

引言 PageHelper 是一款優秀的開源免費 MyBatis 分頁插件,它極大地簡化了分頁查詢的復雜性,支持多種主流數據庫如 MySQL、Oracle、MariaDB、DB2 等。本文將詳細介紹 PageHelper 的基本使用、配置參數、實現原理以及實際項目中的應用。 一、PageHelper …

Memcached中的CAS操作:確保數據一致性的原子武器

Memcached中的CAS操作:確保數據一致性的原子武器 在分布式緩存系統中,保持數據的一致性是一個重要而復雜的任務。Memcached作為一種高性能的分布式內存緩存系統,提供了一種稱為Compare-And-Swap(CAS)的操作&#xff0…

解決fastjson自動過濾null值

解決fastjson自動過濾null值 使用 SerializerFeature.WriteNullStringAsEmpty 解決 List<HistoryVector> historyVectors new ArrayList<>();HistoryVector historyVector new HistoryVector();historyVector.setInput("1");historyVector.setReason(&q…

不銹鋼酸退作業區2#冷線氧化鋯分析儀信號傳輸系統的優化

不銹鋼酸退作業區2#冷線氧化鋯分析儀信號傳輸系統的優化 一、項目提出前狀況: (一)不銹鋼酸退作業區2#冷線退火爐煙氣監測系統所使用的設備為橫河氧化鋯分析儀,此設備主要用于檢測退火爐內天然氣燃燒后煙氣成分中的氧含量值,此設備的檢測準確性直接影響產品質量,而且決定…

計算機操作系統部分選填及大題整理

并發和&#xff08; 共享 &#xff09; 是操作系統的兩個最基本的特征,&#xff08; 虛擬 &#xff09;和&#xff08; 異步 &#xff09; 是操作系統的重要特征&#xff0c;并發執行的程序失去可再現性現代操作系統的兩個基本特征是&#xff08;程序的并發執行&#xff09;和資…