LeetCode初級(jí)算法--設(shè)計(jì)問(wèn)題02:最小棧
一、引子
這是由LeetCode官方推出的的經(jīng)典面試題目清單~
這個(gè)模塊對(duì)應(yīng)的是探索的初級(jí)算法~旨在幫助入門算法。我們第一遍刷的是leetcode推薦的題目。
二、題目
設(shè)計(jì)一個(gè)支持 push,pop,top 操作,并能在常數(shù)時(shí)間內(nèi)檢索到最小元素的棧。
- push(x) -- 將元素 x 推入棧中。
- pop() -- 刪除棧頂?shù)脑亍?/li>
- top() -- 獲取棧頂元素。
- getMin() -- 檢索棧中的最小元素。
示例:
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); --> 返回 -3.
minStack.pop();
minStack.top(); --> 返回 0.
minStack.getMin(); --> 返回 -2.
1、思路
第一種方法:
用列表模擬棧,push、pop、top和getMin分別對(duì)應(yīng)list.append()、list.pop()、list[-1]和min()操作
第二種方法:
引入minStack列表存放最小值
2、編程實(shí)現(xiàn)
第一種方法:
class MinStack(object):
def __init__(self):
"""
initialize your data structure here.
"""
self.l = []
def push(self, x):
"""
:type x: int
:rtype: None
"""
if x is None:
pass
else:
self.l.append(x)
def pop(self):
"""
:rtype: None
"""
if self.l is None:
return 'error'
else:
self.l.pop(-1)
def top(self):
"""
:rtype: int
"""
if self.l is None:
return 'error'
else:
return self.l[-1]
def getMin(self):
"""
:rtype: int
"""
if self.l is None:
return 'error'
else:
return min(self.l)
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(x)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
第二種方法:
class MinStack(object):
def __init__(self):
"""
initialize your data structure here.
"""
self.stack = [] #存放所有元素
self.minStack = []#存放每一次壓入數(shù)據(jù)時(shí),棧中的最小值(如果壓入數(shù)據(jù)的值大于棧中的最小值就不需要重復(fù)壓入最小值,小于或者等于棧中最小值則需要壓入)
def push(self, x):
"""
:type x: int
:rtype: void
"""
self.stack.append(x)
if not self.minStack or self.minStack[-1]>=x:
self.minStack.append(x)
def pop(self): #移除棧頂元素時(shí),判斷是否移除棧中最小值
"""
:rtype: void
"""
if self.minStack[-1]==self.stack[-1]:
del self.minStack[-1]
self.stack.pop()
def top(self):
"""
:rtype: int
"""
return self.stack[-1]
def getMin(self):
"""
:rtype: int
"""
return self.minStack[-1]
本文由博客一文多發(fā)平臺(tái) OpenWrite 發(fā)布!
審核編輯 黃昊宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
人工智能
+關(guān)注
關(guān)注
1817文章
50098瀏覽量
265372 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8553瀏覽量
136948 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5599瀏覽量
124398 -
leetcode
+關(guān)注
關(guān)注
0文章
20瀏覽量
2544
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
IPv6 Only 進(jìn)入倒計(jì)時(shí) ,單棧替代雙棧成網(wǎng)絡(luò)演進(jìn)必然選擇
2025年末,中國(guó)工程院院士鄔賀銓在“2026ICT行業(yè)趨勢(shì)年會(huì)”上強(qiáng)調(diào)“雙棧是過(guò)去的妥協(xié),IPv6Only才是未來(lái)的必然”,這一判斷精準(zhǔn)點(diǎn)出了全球網(wǎng)絡(luò)協(xié)議演進(jìn)的核心方向。隨著技術(shù)兼容方案成熟、政策
開關(guān)電源 變壓器初級(jí)電流異常
直流開關(guān)電源,單相全橋逆變,硬開關(guān)電路
變壓器初級(jí)電流異常突變
一開始使用EE磁芯沒(méi)有問(wèn)題,后來(lái)?yè)Q成環(huán)形磁芯就發(fā)現(xiàn)初級(jí)電流異常了,且跟功率大小沒(méi)有關(guān)系,功率小的時(shí)候也有,且有的功率段又沒(méi)有。
發(fā)表于 12-20 16:57
Stack棧到底用來(lái)干嘛的呢?
Stack_Size就是棧大小,0x00000400就是代表有1K(0x400/1024)的大小。
那這個(gè)棧到底用來(lái)干嘛的呢?
比如說(shuō)我們函數(shù)的形參、以及函數(shù)里定義的局部變量就是存儲(chǔ)在棧里,所以
發(fā)表于 12-01 08:04
堆和棧的區(qū)別
一個(gè)由C/C 編譯的程序占用的內(nèi)存分為以下幾個(gè)部分:
棧區(qū)(stack):由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
堆區(qū)(heap):一般由
在Keil5中查看棧大小
1、修改啟動(dòng)文件:
方法說(shuō)明:棧大小通常在啟動(dòng)文件中定義。可以通過(guò)直接修改這個(gè)文件中的Stack_Size變量來(lái)調(diào)整棧大小。
操作步驟:找到對(duì)應(yīng)的啟動(dòng)文件,定位到Stack_Size的定義處,修改
發(fā)表于 11-14 06:32
基于E203 RISC-V的音頻信號(hào)處理系統(tǒng) -ANC算法簡(jiǎn)介
基于FxLMS算法的寬帶前饋型主動(dòng)噪聲控制系統(tǒng)框圖
其中控制器部分,即是我們算法的核心運(yùn)算部分,即LMS算法。通過(guò)該算法對(duì)初級(jí)聲源的處理
發(fā)表于 10-28 07:50
TPS62A02/TPS62A02A評(píng)估模塊(EVM)技術(shù)解析與應(yīng)用指南
Texas Instruments TPS62A02EVM/TPS62A02AEVM評(píng)估模塊配置用于評(píng)估TPS62A02和TPS62A02A的運(yùn)行。TPS62A
黑芝麻智能端到端全棧式輔助駕駛系統(tǒng)的應(yīng)用場(chǎng)景
黑芝麻智能推出的全新一代端到端全棧輔助駕駛系統(tǒng),以武當(dāng)C1200系列高算力芯片為基石,深度融合自研感知算法,實(shí)現(xiàn)從場(chǎng)景感知到車輛控制的完全閉環(huán)優(yōu)化——讓輔助駕駛系統(tǒng)學(xué)會(huì)理解路況的呼吸與脈搏,真正走進(jìn)“人車共駕”的黃金時(shí)代。
AI的核心操控:從算法到硬件的協(xié)同進(jìn)化
? ? ? ?人工智能(AI)的核心操控涉及算法、算力和數(shù)據(jù)三大要素的深度融合,其技術(shù)本質(zhì)是通過(guò)硬件與軟件的協(xié)同優(yōu)化實(shí)現(xiàn)對(duì)復(fù)雜任務(wù)的自主決策與執(zhí)行。這一過(guò)程依賴多層技術(shù)棧的精密配合,從底層的芯片架構(gòu)
自動(dòng)駕駛中常提的“全棧”是個(gè)啥?有必要“全棧”嗎?
和應(yīng)用,涵蓋從底層硬件、感知算法、高精地圖、定位與融合,到?jīng)Q策規(guī)劃、控制執(zhí)行、軟件平臺(tái),乃至整車集成與云端服務(wù)的完整鏈條。對(duì)于希望在激烈的市場(chǎng)競(jìng)爭(zhēng)中占據(jù)一席之地的車企和科技公司來(lái)說(shuō),全棧似乎代表了掌握核心競(jìng)爭(zhēng)
?REF02 精密電壓參考芯片技術(shù)文檔總結(jié)
的影響最小。REF02 采用單電源供電,輸入范圍為 8V 至 40V,電流消耗極低,僅為 1mA,并且由于改進(jìn)的設(shè)計(jì)而具有出色的溫度穩(wěn)定性。出色的線路和負(fù)載調(diào)節(jié)、低噪聲、低功耗和低成本使 REF02
PPEC電源DIY套件:圖形化算法編程,解鎖電力電子底層算法實(shí)踐
電源。這種方式不僅降低了開發(fā)門檻,還保留了對(duì)底層算法的控制能力,具有很強(qiáng)的實(shí)踐性和教育意義。
升級(jí)版開關(guān)電源DIY 套件核心組件含: PPEC 最小系統(tǒng)板(PPEC32F334RBT7 芯片
發(fā)表于 08-14 11:30
RISC-V架構(gòu)下AI融合算力及其軟件棧實(shí)踐
。目前,進(jìn)迭時(shí)空已經(jīng)取得了顯著的進(jìn)展,成功推出了第一個(gè)版本的智算核(帶AI融合算力的智算CPU)以及配套的AI軟件棧。軟件棧簡(jiǎn)介AI算法部署旨在將抽象描述的多框架算法
基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的MDK-Keil下載算法
基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的Keil下載算法,這樣在我們下載代碼時(shí)可以一鍵把數(shù)據(jù)燒錄到EEPROM中。
深入淺出解析低功耗藍(lán)牙協(xié)議棧
Bluetooth LE協(xié)議棧為什么要分層?怎么理解Bluetooth LE“連接”?如果Bluetooth LE協(xié)議只有ATT層沒(méi)有GATT層會(huì)發(fā)生什么? 一、協(xié)議棧框架 一般而言,我們把某個(gè)
LeetCode初級(jí)算法-設(shè)計(jì)問(wèn)題02:最小棧
評(píng)論